flutter - 04 入门基础知识

Flutter入门基础知识

  • 如何创建Flutter项目?
  • 如何运行Flutter项目?
  • 如何导入Widget?
  • 如何写一个Helloworld?
  • 如何使用Widget并将其嵌套以形成Widget树?
  • 如何创建可重用Widget?

如何创建Flutter项目?

要创建一个Flutter项目有以下两种方式:

从命令行使用flutter create命令。确保Flutter SDK配置了环境变量。
~ flutter create projectflutter

创建完成提示下面内容

In order to run your application, type:

  $ cd projectflutter
  $ flutter run

Your application code is in projectflutter/lib/main.dart.

运行 flutter run

cd projectflutter 
➜  projectflutter flutter run
Launching lib/main.dart on xxxx in debug mode...
 
Signing iOS app for device deployment using developer identity: "Apple
Development: xxxxxxxx (22222222)"
Running Xcode build...                                                  
                                                   
 └─Compiling, linking and signing...                        84.3s
Xcode build done.                                           114.0s                                                                      
Installing and launching...                                        63.0s

➜  projectflutter flutter run
Launching lib/main.dart on xxxx in debug mode...
 
Signing iOS app for device deployment using developer identity: "Apple
Development: xxxxxxxx (22222222)"
Running Xcode build...                                                  
                                                   
 └─Compiling, linking and signing...                         8.5s
Xcode build done.                                           17.5s
Installing and launching...                                        22.2s
Waiting for xxxx to report its views...                                5ms
Syncing files to device xxxx...                                           
(This is taking an unexpectedly long time.)   
使用安装了Flutter和Dart插件的IDE。

在这里插入图片描述

如何运行Flutter项目?

在Flutter中, 通过以下两种方式来运行项目:

  • 从项目的根目录使用flutter run。
  • 在带有Flutter和Dart插件的IDE中使用 run 选项。
    $flutter run-d ‘iPhone X’
    -d 后面跟的是具体的设备名称, 可以是Android或iOS模拟器的名字,也可以一台已经连接到电脑上的Android或iOS的设备。

在这里插入图片描述

如何导入Widget?

在Flutter中, 要使用Material Design库中的小部件, 则需要导入material.dart包。要使用iOS样式widget, 请导入Cupertino库。要使用更基本的窗口widget集,请导widget库。或者, 当然, 也可以导入自己编写的widget:

import 'package:flutter/material.dart';//导入系统materialwidget库
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/my_widgets.dart';//导入自己的widget

无论您导入哪个widget包, Dart都只会导入在您的应用中使用的widget。

如何写一个Helloworld?

在Flutter中, 您可以创建一个完全相同的Helloworld!应用程序使用核心窗口小部件库中的Center窗口小部件成为窗口小部件树的根, 并且有一个子窗口, 即“Text”窗口小部件:

import 'package:flutter/material.dart';

void main() {
  runApp(
    Center(
      child: Text(
        'Hello World',
        textDirection: TextDirection.ltr,
      ),
    ),
  );
}

如何使用Widget并将其嵌套以形成Widget树?

在Flutter中, 几乎所有东西都是widget。
widget是用户界面的基本构建块, 您将widget组成一个层次结构, 调用widget树。每个窗口widget都嵌套在父窗口widget中, 并从其父窗口继承属性。甚至应用程序对象本身也是一个组件, 没有单独的“应用程序”对象。相反, 根widget担任此角色。

Widget可以定义:

  • 结构元素 - 如按钮或菜单
  • 文体元素 - 像字体或颜色主题
  • 类似布局的填充或对齐的一个方向

以下示例使用Material库中的Widget显示”Helloworld!”应用程序。在此示例中, widget树嵌套在Material App的根widget中。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());
class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return MaterialApp(
      title: "Hello Flutter ",
      home: Scaffold(
        appBar: AppBar(
          title: Text(
            "hello appBar",
          ),
        ),
        body: Center(
          child: Text(
            "hello body",
            textDirection: TextDirection.ltr,
          ),
        ),
      ),
    );
  }
}

以下图片显示了使用Material Design小部件构建的“Helloworld!”。
在这里插入图片描述

如何创建可重用的Widget?

需要定义一个类来创建自定义widget, 然后重用widget。您还可以定义和调用返回可重用小部件的函数, 如以下示例中的构建函数所示。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());
class MyApp extends StatelessWidget{
  var index = 10;
  @override
  Widget build(BuildContext context){
    return MaterialApp(
      title: "Hello Flutter ",
      home: Scaffold(
        appBar: AppBar(
          title: Text(
            "hello appBar",
          ),
        ),
      body: CustomCard(index: index, onPress:(){
        print('Card $index');
      }),
      ),
    );
  }
}


class CustomCard extends StatelessWidget {

  CustomCard({@required this.index, @required this.onPress});

  final index;
  final Function onPress;
  
  @override
  Widget build(BuildContext context) {
    return Card(
      child: Column(
        children: [
          Text('Card $index'),
          FlatButton(onPressed: this.onPress, child: const Text('Press'))
        ],
      ),
    );
  }
}

在前面的例子中, CustomCard类的构造函数使用Dart的大括号语法{} 来配置可选参数。
如果要标识必须的字段, 请从构造函数中删除花括号, 或者将@required添加到构造函数中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小沈曰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值