可以在main.dart Flutter中调用提供程序功能吗

时间:2020-08-14 18:28:02

标签: flutter dart

在Flutter中, 我正在调用提供程序函数以从main.dart中的数据库加载数据,并且看到main.dart正在连续调用它们,因此在启动之后,我添加了bool来检查它们是否已调用或是否正在加载以停止连续调用关心我这样可以吗有什么更好的方法?我不想将其添加到initstate的第一页,就好像用户在SharedPreferences中有详细信息一样,我等待发送令牌以获取其他数据。

这是main.dart文件中的调用部分。

  1. 检查用户在SharedPreferences中是否有详细信息。
  2. 如果用户在SharedPreferences中有详细信息,则加载聊天。
  3. 如果以前未连接,则连接到套接字。
  4. 如果用户有详细信息,请开始加载,并在第一步中将isLoadingUserForMain = false设置为false,以便在加载并获得响应之前将无法调用。

请告诉我您的意见。

2 个答案:

答案 0 :(得分:1)

寻找实现目标的最佳方法是...

  1. 制作启动画面或中间画面。
  2. 将所有异步任务推送到该Widget。
  3. 您可以在那里处理任何事情。

不建议在主要功能中执行异步任务。因此,您需要使Material应用程序执行任务。

答案 1 :(得分:1)

我会有一个@Akash提及的初始屏幕,但是在初始化提供程序时会调用这些方法。例如,假设您在应用顶部创建了这样的提供商:

runApp(MultiProvider(providers: [
  Provider<DatabaseService>(
    create: (_) => YourService(),
    lazy: false,
  ),
  ], 
  child: MyApp()));

您在问题中的初始化逻辑将存在于YourService的构造函数中。

现在您可以拥有userDetails的流,您的启动屏幕将收听此流,一旦它发出详细信息,请转到相应的屏幕。