非常感谢您的帮助,因为我已经尝试解决几天了,但是仍然无法解决问题。
下面的所有代码都可以正常使用,直到最近,列表像以前一样停止更新,直到我热重启它为止。
以下两个功能分别获取我的地图列表和笔记列表
Future<List<Map<String, dynamic>>> getNoteListMap() async {
Database db = await this.database;
var result = await db.query(noteTable);
return result;
}
Future<List<Note>> getNoteList() async {
var noteMapList = await getNoteListMap();
int count = noteMapList.length;
//list of notes, each note consist of their own independent variables
List<Note> noteList = new List<Note>();
for (int i = 0; i < count; i++) {
noteList.add(Note.fromMapObject(noteMapList[i]));
}
return noteList;
}
这是我的主要功能,它使用FutureBuilder创建一个列表。但是,该列表没有更新,仅在每次热重启后才会更新。
FutureBuilder<List<Note>>(
future: _databaseHelper.getNoteList(),
builder: (BuildContext context, AsyncSnapshot<List<Note>> snapshot) {
if (snapshot.hasData) {
return ListView.builder(
physics: TargetPlatform.iOS!=null? BouncingScrollPhysics() : ClampingScrollPhysics(),
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int position) {
Note note = snapshot.data[position];
return Card(
color: Colors.white,
elevation: 2.0,
child: new ListTile(
title: new Text(note.title?? ''),
subtitle: new Text(note.bodyText ?? ''),
onTap: () => _navigateToTaskByDatePage(date),
),
);
}
);
} else if (snapshot.hasError) {
return Container(
child: Center(
child: new Text('Error: ${snapshot.error}'),
),
);
} else {
return Container(
width: 0,
height: 0,
);
}
},
),
答案 0 :(得分:0)
怎么样?
class ... {
Future<List<Note>> futureNoteList;
@override
void initState() {
super.initState();
futureNoteList = _databaseHelper.getNoteList();
}
FutureBuilder<List<Note>>(
future: futureNoteList,
...
),
void update() async {
val newList = await _databaseHelper.getNoteList();
setState(() {
futureNoteList = newList;
});
}
答案 1 :(得分:0)
感谢提供的所有解决方案来帮助解决我面临的问题!但是,我设法通过快速升级解决了我的问题。显然,我的代码没有任何问题,这只是版本问题。