【发布时间】:2019-08-26 19:58:11
【问题描述】:
我真的很想念 C 编程。 Flutter 相当混乱。
问题来了:
我们在有状态类 Home 中有一个函数。这将创建一个名为 myMenu 的页面。
class Home extends StatefulWidget {
myMenu createState() => myMenu();
}
class myMenu extends State<Home>
{
void myProblemFunction(String stringItem) async {
final db = await myDatabaseClass.instance.database;
...
}
每当 myProblemFunction 运行时,它都会实例化一个新的数据库实例。
我只想把这个命令放一次(即:
final db = await myDatabaseClass.instance.database
- ) 在我的文档中的任何位置(这是我的 main.dart 文件(顺便说一下)。现在,我可以把它放在 initState() 中 - 当然.. 但这很头疼,因为 a) 我必须它是异步的,我觉得这会给我带来问题,并且 b)在 initState() 中声明最终 db...(等)不会使 db 变量对我的函数可见。
我该怎么办?
myMenu 类中的哪些元素被触发?我应该把这个函数放在小部件构建方法中吗?但是如果小部件被刷新,那么这个函数肯定也会被调用(再次)——我只想调用一次。
谢谢
【问题讨论】:
-
如果您有一些全局实例想要初始化一次,那么您可以在
main()中执行此操作,就像在 C 中一样。