Flutter 基础笔记 三
如何导入Widget?
在Flutter中,要是用`Material Design`库中的小部件,则需要导入`material.dart`包。要是用iOS样式widget,请导入Cupertino。要使用更基本的窗口widget'库,请打入widget库。或者,当然,也可以导入自己编写的widget。(无论你导入那个包,Dart都只会导入在您的应用使用的widget)
如何使用Widget并将其嵌套已形成Widget树?
在Flutter中,几乎所有东西都是widget。
widget是用户界面的基本构建块,您将widget组成一个层次结构,调用gwidget树。每个窗口widget都嵌套在父窗口widget中,并从其父窗口继承属性。甚至应用程序本身也是一个组件,没有单独的“应用程序”对象。相反,根widget担任此角色。
Widget可以定义:
- 结构元素 - 如按钮或菜单
- 问题元素 - 想字体或颜色主题
- 类似布局的填充或对其的一个方向
以下示例使用`Material`库中的widget显示“Hello world!”应用程序。在此事例中,widget树嵌套在MaterialApp的跟widget中。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context){
return MaterialApp(
title:"Welcome to Flutter",
home: Scaffold(
appBar: AppBar(
title: Text('Welcome to Flutter'),
),
body:Center(
child: Text('Hello world');
),
),
);
}
}
如何创建可重用的Widget?
在Flutter中,同样需要定义一个类来创建自定义widget,然后重用widget。您还可以定义和调用返回可重用小部件的函数,如一下事例中的构建函数所示。
class CustomCar extends StatelessWidget{
CustomCard({@required this.index, @required this.onPress});
final index ;
final Function onPress;
@override
Widget build(BuildContext context){
return Card(
child: Column(
children:<Widget>[Text('Card $index'),FlatButton(child: const Text('Press'),onPressed:this.onPress,),]
),
),
}
}
//Usage
CustomCard(
index:index,
onPress(){
print("Card $index");
}
)
CustomCard
类的构造函数使用Dart的大括号语法 {}
来配置 可选参数。
如果要表示必须的字段,请从构造函数中删除{}
,或者将@required添加到 构造函数中。