【问题标题】:How to call setState from other file Dart [duplicate]如何从其他文件 Dart 调用 setState [重复]
【发布时间】:2019-09-27 22:23:29
【问题描述】:

如何从 Category.dart 文件中调用setState()

在 main.dart 中:

body: Column(
      children: <Widget>[
        slideShow(),
        category() // from Category.dart
      ],
    )

在 Category.dart 中:

category() {
  return _girdView();
}

_girdView() {
  return Center();
}

【问题讨论】:

    标签: android ios dart flutter


    【解决方案1】:

    你可以参考这个答案:

    Flutter setState to another class?

    老实说,这更像是一个 hack,而不是一个解决方案,如果你的项目相对较小,这是 setState 的一个限制,那么它很好,但否则你应该使用 ScopedModels 或 BLocs 或 Streams 来代替

    【讨论】:

      【解决方案2】:

      我建议您使用 Provider,因为它最近被 Google 团队推荐为最佳方法。无论您的项目有多大,提供商都会确保您保持代码干净。它类似于 ScopedModel,但使用了类固醇。

      Flutter 团队的 Flutter I/O 演示:https://www.youtube.com/watch?v=d_m5csmrf7I

      包裹:https://pub.dev/packages/provider#-readme-tab-

      【讨论】:

        【解决方案3】:

        setState() 仅针对同一个类调用,当您调用 setState() 时,您的小部件将被重建。如果要调用父类的 setState ,则可以使用 StateUp 从子类回调父类方法。 如果你想调用子类 setState() 那么你可以使用 GlobalKey 然后传递给子类然后调用子方法,在这个方法下你可以定义setState(); 对于更复杂的状态管理,您可以使用ScopeModelInheritWidgetReduxBlocStreamFlutter State Management

        【讨论】:

          猜你喜欢
          • 2019-03-16
          • 1970-01-01
          • 1970-01-01
          • 2021-11-27
          • 2019-12-29
          • 2021-12-26
          • 1970-01-01
          • 1970-01-01
          • 2021-05-04
          相关资源
          最近更新 更多