[Flutter学习一]Flutter理解

1,flutter的理解:

跨平台性:目前至少夸五中平台。Mac,Android,Windows,Linux,Ios。
UI:使用了大量的 Material Design和Cupertino风格组件。
60fps超高性能,完全可以胜任游戏的制作。

2,一切皆为组件:Widget 是Flutter用户程序构建的基本构建块。按钮,输入框,卡片,动画,手势都可以视为Widget。

有状态组件:是界面状态会发生变化的组件。
无状态组件:即界面不发生变化的组件。

[Flutter学习一]Flutter理解_第1张图片

3,构建一个Widget:
需要重写 Widget 的build方法来构建一个组件:
@protected Widget build(BuildContext context)

State:一个Widget的状态。即一个需要改变状态的Widget需要通过setState来改变数据值。并通知框架更新界面。
同React中的状态概念一致。
[Flutter学习一]Flutter理解_第2张图片

4,无状态组件和 有状态组件:

定义一个无状态组件:

//=======myApp 不做状态处理  所以是无状态的====无状态 组件========
 class MyApp extends StatelessWidget {
   //继承的  方法:
   @override
   Widget build(BuildContext context) {
     final String title = "flutterDemo";
     var app = new MaterialApp(
         theme: ThemeData(
           brightness: Brightness.light, //使用亮色 主体
           primaryColor: Colors.lightGreen[800],
           accentColor: Colors.orange[800], //前景色  文本按钮颜色
         ), // app主题样式
         home: new MyHomePage(
           title: title,
         ));
     return app;
   }
 }

定义一个有状态组件:

//有状态  需要变化   继承自 StatefulWidget
 class MyHomePage1 extends StatefulWidget {
   final String title;
   const MyHomePage1({Key key, this.title}) : super(key: key);
   @override
   State createState() => new _MyHomePageState();
 }
 //必须 继承 State类      注意后面的  泛型应该为  widget组件
 class _MyHomePageState extends State {
   int counter = 0;
   @override
   Widget build(BuildContext context) {
     // TODO: implement build
     var homPage = new Scaffold(
       appBar: new AppBar(
         title: new Text(widget.title),
       ),
       //居中布局
       body: new Center(
         //垂直布局
         child: new Column(
           //主轴   居中对齐
           mainAxisAlignment: MainAxisAlignment.center,
           children: [
             new Text('要展示的state:', style: Theme.of(context).textTheme.display1),
             new Text(
               "counter=" + "$counter",
               style: Theme.of(context).textTheme.display1,
             )
           ],
         ),
       ),
       floatingActionButton: new FloatingActionButton(
         onPressed: () => {
           setState(() {
             counter++;
           }), //方法  用于更改数据状态
         },
         tooltip: "Increment",
         child: new Icon(Icons.add),
       ),
     );
     return homPage;
   }
 }

个人理解:flutter 确实和React很像。 State 的作用和 Java中变量有有些相似。

你可能感兴趣的:([Flutter])