【发布时间】:2020-08-14 19:11:14
【问题描述】:
我有一个显示世界时间的应用程序。我有一个用于更改世界各地不同位置的页面。这是一个 ListView。
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: colorOne,
appBar: AppBar(
backgroundColor: Colors.black,
title: Text("Change location"),
centerTitle: true,
elevation: 0.0,
),
body: ListView.builder(
physics: const AlwaysScrollableScrollPhysics(),
padding: EdgeInsets.fromLTRB(5, 10, 5, 0),
itemCount: locations.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
onTap: () {
updateTime(index);
... rest code
如你所见,当我点击 ListTIle 时,它会调用 updateTime 函数
updateTime函数:
void updateTime(index) async {
WorldTime instance = locations[index];
await instance.getTime();
Navigator.pop(context, {
"location": instance.location,
"flag": instance.flag,
"time": instance.time,
"date": instance.date,
"isDayTime": instance.isDayTime,
});
// obtain shared preferences
final savingLastLocation = await SharedPreferences.getInstance();
// set value
savingLastLocation.setString("location", instance.location);
savingLastLocation.setString("url", instance.url);
savingLastLocation.setString("flag", instance.flag);
}
如果用户在等待该功能时开始在图块上发送垃圾邮件,应用将显示完整的空白灰色屏幕或显示“布尔表达式必须为空”的红色死屏。
如果已经调用过一次,如何添加某种加载屏幕/小部件或防止再次调用函数?
【问题讨论】: