variables - 在 Flutter 中编辑字符串变量
问题描述
如何编辑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
beforesocketUtil.join(id).then( ... )
以等待该操作完成,然后再继续打印语句。
更好的是,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
所以我也删除了它)。
推荐阅读
- soap - 尝试 POST 到 Cybersource Simple Order API 时收到 No WS-Security Header 错误
- spring - Spring 微服务实例未向在 8761 以外的端口中运行的 Eureka 注册
- shared-hosting - 重定向 https 网址
- javascript - 缩放到搜索(标记)位置 Google Maps API
- python-3.x - 如何在TensorFlow中实现沿特定轴的填充?
- spring - 带有不必要 jar 的 Spring Boot War 文件
- sql - 在 mssql 中将数据从一个数据库复制到另一个数据库,同时保持一致性
- c# - 如何通过 GET 减少弹性回复时的数据
- javascript - 如何根据内容调整 Flickity 轮播的高度?
- java - 如何摆脱致命异常:GLThread?