カスタムコンポーネントは、実際にクラスでフラッターである、あなたはStatefulWidgetやStatelessWidgetを継承しなければならないコンポーネントを定義したいです
StatefulWidget
:体のようなステートフル・コンポーネントは、ウィジェットは、その後のライフサイクルを変更することができます保持しています。長い間私たちが望む限り改变页面中的数据
、この時間StatefulWidgetクラスを継承する必要性についてStatelessWidget
:ステートレスコンポーネントは、状態を変更することはできません
ステートレスコンポーネント
//直接继承无状态组件的类就可以使用
class StudyFlutter extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("我是头部的内容"),
),
body: Text("无状态内容部分"),
),
);
}
}
ステートフルコンポーネント
そしてヴュー、データバインディングに反応するように非常に似ている
次のような場合は、動的にリアルタイムデータの更新を表示するには、ボタンをクリックすることで、データのリストを生成することができます
class ShowListView extends StatefulWidget {//继承StatefulWidget主结构
ShowListView({Key key}) : super(key: key);
@override//重写动态数据构建方法
_ShowListViewState createState() => _ShowListViewState();
}
//定义私有函数来继承数据类就可以了
class _ShowListViewState extends State<ShowListView> {
List list = new List();
//这里就是有状态组件的主要结构了,这里写你要定义的代码
@override
Widget build(BuildContext context) {
return ListView(children: <Widget>[
Column(
children: this.list.map((value) {
return ListTile(
title: Text(value),
);
}).toList(),
),
RaisedButton(
onPressed: () {
setState(() {
this.list.add("我是第2条新闻");
});
},
child: Text("submit"),
)
]);
}
}