Flutter1.0实践要点
实践要点
- dart文件命名使用小写加下滑线,dart类命名使用驼峰;Dart语法;
- 绝对定位widget:
Stack
、Positioned
- url包裹widget:
WebviewScaffold
- Color设置16进制颜色:
Color(int.parse('0xff' + 'ffffff'))
,前两个ff指代的是alpha; - 如果是声明dart类内部可见的方法或属性,请以下划线开头;
- List遍历方式:
List.map、List.forEach、for-in-
- 声明构造方法,参数使用大括号包裹,则参数为可选的;
- 为引入的包起别名:
import xxx as alias
- float to int:
int a = (0.5).toInt()
- 数组切片:
list.subList(loc, len)
;
JSON Model转换:
- 对于JSON到模型,模型类到JSON结构的实现代码,可以将相应的JSON copy到如下工具网址,可生成相应的Dart Model代码;修改类名,添加
factory
修饰fromJson构造方法;
...
final String searchUrl;
GridNavModel({
this.searchUrl});
factory GridNavModel.fromJson(Map<String, dynamic> json){
return GridNavModel(searchUrl: json['searchUrl'])
}
// model转json
Map<String, dynamic> toJson() {
return {
searchUrl: searchUrl}
}
...
// 实现了toJson方法,就可以通过如下方式将model转换为json
HomeModel model = ...
resultStr = json.encode(model);
嵌套的json解析model:
var listJson = json['list'] as List;
List<SubModel> list = list.map((item)=> SubModel.fromJson(item)).toList();
解决网络请求返回的中文乱码问题:
// import 'dart:convert';
static Future<HomeMode> fetch</