【问题标题】:Is it okay to call provider functions in main.dart Flutter可以在 main.dart Flutter 中调用提供者函数吗
【发布时间】:2020-12-04 15:55:50
【问题描述】:

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

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

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

请告诉我你的意见谢谢..

【问题讨论】:

  • 不建议在问题中包含您的代码图片。请将您的代码粘贴进去,并在每一端用三个反引号 (`) 包裹起来。谢谢!

标签: flutter dart


【解决方案1】:

看看做你想做的最好的方法是......

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

不建议在 main 函数中做异步任务。所以你需要制作 Material 应用来完成任务..

【讨论】:

    【解决方案2】:

    我会有一个像@Akash 提到的启动画面,但我会在您的提供程序初始化时调用这些方法。例如,假设您在应用顶部创建这样的提供程序:

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

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

    现在您可以拥有一个userDetails 流,您的初始屏幕将收听该流,一旦它发出详细信息,就会转到相应的屏幕。

    【讨论】:

      猜你喜欢
      • 2013-02-14
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2023-02-03
      • 2019-11-17
      • 1970-01-01
      相关资源
      最近更新 更多