Open zhaobinglong opened 3 years ago
// 定义一个异步的函数
// 如果函数没有return,则用void定义,future是函数的关键字,async、await是异步的关键字
Future<void> getGasList() async {
var data = await APPService.getGasList();
this.setState(() {
gasList = data;
});
}
// 利用GestureDetector包裹需要监听点击的widget
GestureDetector(
onTap: (){
Xxxx
},//写入方法名称就可以了,但是是无参的
child: Text("dianji"),
),
// 获取屏幕宽度
MediaQueryData mediaQuery = MediaQuery.of(context);
var _screenWidth = mediaQuery.size.width;
var newList = list.map((value){
return value*2;
});
// 遍历数组,原始数组被改变
List<int> list47 = [3, 4, 1, 2, 5];
list47.forEach((element){//遍历每个元素 此时不可add或remove 否则报错 但可以修改元素值,
element += 1;
// print(element);//依次输出:4 5 2 1 6
list47[3]=0;//直接修改list对应index的值
list47[0]=0;
});
// 遍历数组,找到符合要求的最后一个目标元素
this.gasList.lastWhere((v) => v['checked'] == true)
// 遍历数组,找到符合要求的第一个目标元素
this.gasList.firstWhere((v) => v['checked'] == true)
// mainAxisAlignment:元素垂直方向居中对齐
mainAxisAlignment: MainAxisAlignment.center,
Center(
child: Text(
"选择gas price",
textAlign: TextAlign.center,
),
),
常见场景:进入页面后先loading,拿到数据后渲染页面
使用FutureBuilder,一旦state中的值有变化,FutureBuilder会被重复触发,页面重新loading,然后渲染
var _futureBuilderFuture; // 主要是生命一个变量用力来保存异步结果,不要直接给future异步函数
@override
void initState() {
super.initState();
///用_futureBuilderFuture来保存结果,以避免不必要的ui重绘
_futureBuilderFuture = xxx();
}
body: FutureBuilder(
future: _futureBuilderFuture, // 利用
....
列表
横向排列的列表,利用row来实现
列表项的数据一边都是动态获取的,