如何编辑messagePrefs
变量的值。在我的代码中:
Future<List<ChatTile>> fetchChat(socketutil,id) async {
Completer completer = new Completer();
String messagePrefs = '[]';
socketutil.join(id)
.then((result) async {
print("DUA");
SharedPreferences prefs = await SharedPreferences.getInstance();
messagePrefs = (prefs.getString('messagePrefs') ?? "[]");
print(messagePrefs); value is '[{"createdAt":"2018-09-07T15:24:26.280Z","is_read":1,"_id":"5b92982a5d31755e82288456","from_id":"5b751f8a052e8b0a19f1c684","from_name":"RITA .L. Bubun","from_photo":"https:\/\/lh3.googleusercontent.com\/-Nocv8SNhvn0\/AAAAAAAAAAI\/AAAAAAAAALk\/nwOSRVOuPKg\/photo.jpg","from_device":"Mobile Phone","text":"Assalamualaikum, mohon kiranya kami dapat diinformasikan terkait dokumen akreditasi prodi, apabila kami telah mengirim dokumen dengan mengisi SAPTO online, dan kemudian masih ad perbaikan dan perbaikan tersebut dikirim pada bulan Oktober, apakah prodi tersebut akan terkena aturan pemberlakuan 9 standar atau tetap menggunakan 7 standar sesuai pengajuan sebelum Oktober"}]'
completer.complete(result);
})
.catchError((e) {
print(e);
});
print(messagePrefs); //value is '[]'
return await compute(parseListChat, messagePrefs);
}
我该怎么做,改变messagePrefs
变量的值?
谢谢你,最好的关注。
您正在更改该值,但是在执行print语句之后会发生这种情况。
尝试在await
之前添加socketUtil.join(id).then( ... )
以等待该操作完成,然后继续执行print语句。
更好的是,始终使用await
而不是将其与then
调用混合:
Future<List<ChatTile>> fetchChat(socketutil,id) async {
String messagePrefs = '[]';
try {
var result = await sockeutil.join(id);
print("DUA");
SharedPreferences prefs = await SharedPreferences.getInstance();
messagePrefs = (prefs.getString('messagePrefs') ?? "[]");
print(messagePrefs);
} catch (e) {
print(e);
}
print(messagePrefs);
return await compute(parseListChat, messagePrefs);
}
(我没有看到任何使用completer
所以我也删除它)。