Jas*_* O. 11 async-await flutter
Shared_preferences ( https://pub.dev/packages/shared_preferences ) 似乎不适用于 Flutter for Web。
我有按下按钮时调用的以下函数。
getEmail() async {
print("reached 1st line");
SharedPreferences prefs = await SharedPreferences.getInstance();
print("reached 2nd line");
String _confirmedEmail = prefs.getString('_confirmedEmail') ?? "";
)
Run Code Online (Sandbox Code Playgroud)
它打印“到达第一行”而不是“到达第二行”,这意味着程序没有通过 await 语句。有趣的是,我也没有收到任何错误。它似乎只是忽略了 await 语句之后的其余函数。
在 Flutter for Web 中存储共享首选项的最佳选择是什么?
小智 21
好消息,从 0.5.6 版本开始,shared_prefs flutter 默认支持 web
现在它包括了网络的shared_preferences
您的代码应该无需更改即可运行,只需更新pubspec.yaml 中的依赖项
dependencies:
shared_preferences: ^0.5.6
Run Code Online (Sandbox Code Playgroud)
小智 17
现在最新的shared_preference包包含了网络支持。但是,如果您在调试 Web 模式下运行,您将看到共享首选项在 Web 上不起作用。
原因是Flutter Web每次都运行在随机端口上,无法重新收集共享或存储的数据。
测试这一点的最佳方法是在网络上运行 flutter 应用程序两次并检查 URL,它将始终显示不同的端口。
localhost:5050/#/
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请强制 flutter 在同一端口上运行应用程序。
您可以通过在这样的终端在网络上运行 flutter 应用程序时添加端口来完成此操作。
flutter run -d chrome --web-hostname localhost --web-port 5050
Run Code Online (Sandbox Code Playgroud)
或者您可以像这样在 VS Code 的 lauch.json 文件中添加端口。
"version": "0.2.0",
"configurations": [
{
"name": "appname",
"request": "launch",
"type": "dart",
"args": ["--web-port", "5050"]
},
Run Code Online (Sandbox Code Playgroud)
这将帮助您维护会话并检索数据。
| 归档时间: |
|
| 查看次数: |
7263 次 |
| 最近记录: |