Flutter 基础

参考文章: https://www.jianshu.com/p/06aebcad0543

Dart语言语法

参考文章:https://www.jianshu.com/p/06aebcad0543

//判空的最佳实践
List<String> list=['a','b'];
list=null;
var target=list?.contains('a')??false;//?. 如果前面是null,就不执行后面的逻辑,并返回null; ??如果前面的是null,就将后面的值赋值给它
//异步代码的编写
test() {
    fetchData().then((str) {
      print(str);
    }).catchError((error) {
      print('myError: $error');
    });
  }

  fetchData() async {
    return await test2();
  }

  test2() {
    String a;
    return a.trim();
  }

如何导入组件

import 'package:flutter/widgets.dart';

注意,无论你导入了多少库,dart只会导入你在应用中使用到的库

一切都是Widget

void main() => runApp(Center(
      child: Text(
        'hello ',
        textDirection: TextDirection.ltr,
      ),
    ));

自定义Widget

//自定义Widget的代码
import 'package:flutter/material.dart';

class MyWidget extends StatelessWidget {
  final int index;
  final Function onclick;

  MyWidget({this.index, this.onclick});

  @override
  Widget build(BuildContext context) {
    return Card(
      child: Column(
        children: <Widget>[
          Text('Card111 $index'),
          FlatButton(
            child: Text('click'),
            onPressed: onclick,
          )
        ],
      ),
    );
  }
}

//使用的代码
import 'package:flutter_app/MyWidget.dart';

return MyWidget(index: i, onclick:(){
            print('hahh: ');
          },);

Flutter中的Views

View的概念对Android、ios开发来说,应该是非常熟悉的,简单的说,就是一个页面,就是由很多个View组成的。

Flutter中的Widget可以理解成Android平台的View,但跟Android平台的View又有很多的区别:

Flutter中的widge可以认为是 声明和构建UI的方法。widget是不可变的,他们会存在于状态被改变之前,每当widget或其状态发生变化时,Flutter的框架都会创建一个新的Widget实例树。 这也决定了 Flutter的widget更轻巧,widget并不是视图,不会直接绘制任何东西,只是对UI及语意的描述。

Android中可以通过View中的方法,直接更改视图。在flutter中,widget是不可变的,不会直接更新,通过操作widget的状态来实现更新。

StatelessWidgets 适用于用户界面不依赖对象中的配置信息时,那些固定不变的元素都可以使用 StatelessWidget。
如果是动态变化的,比如根据用户交互后的数据更改UI,就必须使用StatefulWidget并告诉Flutter框架Widget的状态已更新。
StatefulWidget和StatelessWidget主要区别就是StatefulWidget具有一个State对象,该对象存储状态数据并将其传递到树重建中,因此状态不会丢失。

布局

flutter提供的布局widget:

Flutter 布局相关的widget及基础使用

TODO

ListView

初始化

setState 解析

TODO

GestureDetector 添加点击事件及其他的点击事件

TODO

Flutter 如何调用硬件

TODO

posted @ 2019-05-25 15:09  gregpeng  阅读(156)  评论(0)    收藏  举报