1: .. 语法
datas..addAll(friend_datas)..addAll(friend_datas); //链式编程 多次添加数据
2:sort 排序
//排序:
//numbers.sort((a, b) => [a.length.compareTo(b.length));]
datas.sort((Friends a,Friends b) => a.indexLetter.compareTo(b.indexLetter));
3:获取控件的坐标值
//拿到box
RenderBox box = context.findRenderObject();
//拿到y值 获取空间的坐标 y值
double y = box.globalToLocal(globalPosition).dy;
4: clamp 函数,取值在 一个范围
// Returns this [num] clamped to be in the range [lowerLimit]-[upperLimit].
var a = 100;//一般 值 不确定
a.clamp(0, 1000);// 取值在(0,1000)
5:ListView 绑定到ScrollController上,
return ListView.builder(
controller: _scrollController,
)
//手动滑动到某位置上
_scrollController.animateTo(offset, duration: null, curve: null)
6:导入package:
链接:http: https://pub.dev/packages/http
在pubspec.yaml中 添加 http: 0.12.1 => 点击 pub get
or 控制台命令 $flutter packages get
7:Map 与 Json 转换,字典模型的转换
使用 http 库,需要进行encode decode 。
import 'dart:convert';
void testJsonConvertMap() {
final chat = {
'name':'张三',
'message':'你吃了吗?'
};
//Map 字典转 json ==> encode
var chatJson = json.encode(chat);
print(chatJson);
//Map 字典转 json ==> decode
var newMap = json.decode(chatJson);
print(newMap);
print(chat is Map);// is 类型判断 Map
}
8:Dart异步编程
Dart 是单线程语言,这样没有 资源抢掠夺,锁的问题。
但有能实现多线程的方案 Isolate compute
9:await 修饰 异步函数操作
void getData() async {
print('开始data=$_data');
//1.后面的操作必须是异步才能用await
//2.当前函数必须是异步函数
Future future = await Future(() {// await 表示后边的操作,都变为 同步执行了
//耗时操作
for (int i = 0; i < 1000000000; i++) {}
// throw Exception('网络异常');
return '哈哈';
});
10: Future链式调用,处理网络请求
//处理错误
future.then((value) {
print('then 来了!!');
print(value);
}).catchError((e) {
print('捕获到了:' + e.toString());
}).whenComplete(() {
print('完成了!');
});
网友评论