Flutter 基础
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

浙公网安备 33010602011771号