首页 > 解决方案 > 在 Flutter/Dart 中有单例 + Provider 可以吗?

问题描述

所以我正在开发一个 Flutter 应用程序。我有一个单例 GameManager,它看起来像:

class GameManager extends ChangeNotifier {
  static final GameManager _singleton = GameManager._internal();

  factory GameManager() {
    return _singleton;
  }

  GameManager._internal();
}

在我的入口点 main.dart 中:

  @override
  void initState() {
    super.initState();

    GameManager().connect(isConnected: () {
      DynamicLinksService().initDynamicLinks();
    });
  }

  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider<GameManager>(create: (context) => GameManager()),
      ],
    ...
  }
  1. GameManager().connect() 正在使用单例模式。
  2. 我在我的页面中使用 main.dart 中的 Provider 和 Consumer 来监听 GameManager 中的状态。
  3. 我将其设为单例,因为使用 GameManager 的 connect() 和提供程序都在 main.dart 中,我想在入口点调用 connect()。
  4. 单例 + 提供者/消费者可以吗?如果不是,5 是一个有效的选项吗?
  5. 删除单例。在我的主页中,通过消费者的 GameManger 调用 connect。

标签: flutterdart

解决方案


推荐阅读