程序启动的时候,一般怎么加载用 await 从本地数据库拿到的数据?

2022-03-15 15:35:41 +08:00
 Nillouise

一些配置信息存到 app 本地数据库的时候,启动时提取出来需要用 await (比如用数据库 sqlite 或 realm ),那么一般是怎么处理这个 await 跟界面渲染的关系的?是直接在 main 函数里用 await 等配置数据加载出来再 runApp 的吗?但这种用本地配置数据都需要 await 我感觉就有点麻烦,还是有别的更好做法?

1440 次点击
所在节点    Flutter
7 条回复
bankroft
2022-03-15 16:00:04 +08:00
我是先 loading 占位,等拿到数据再跳转 main
txx
2022-03-15 16:01:21 +08:00
当然是做个 Splash 页面啊...
Nillouise
2022-03-15 16:12:26 +08:00
@txx load 点本地配置数据我感觉没必要做 splash 页面吧,程序本身也不复杂。

@bankroft 本地配置数据也 loading 占位?这样用户不是看到一个很快的闪一下的 loading 么?我之前也是这么做的,感觉不好
txx
2022-03-15 22:23:44 +08:00
@Nillouise 阻塞 UI 线程的行为不可取啊...
Nillouise
2022-03-16 04:31:41 +08:00
@txx 你没写过 flutter 吗?读数据用的是 await 不会阻塞线程的。
linghtls
2022-03-16 11:17:47 +08:00
await 怎么就麻烦了…,数据量不大可以直接在 runApp 之前加载到内存
txx
2022-03-16 14:11:05 +08:00
@Nillouise

我表述有问题.. 我不确定 runApp 这个时间发生在哪里,如果是 iOS 的 applicationDidFinishedLaunching ,阻塞这个是容易触发 watchdog 的。毕竟如果你能确定 sqlite 的东西一直都是轻量化的这么做也没啥问题,缺点就是如果是个团队性质的,团队里哪个傻逼丢进去一个大字典啥的,在低端设备上就 watchdog 了。

我刚才去瞅了一眼,这地方我理解是错误的,flutter engine 的 初始化是放在 FlutterViewController 初始化之后的 这就无所谓了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/840514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX