Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有单例+;供应商在颤振/飞镖?_Flutter_Dart - Fatal编程技术网

Flutter 有单例+;供应商在颤振/飞镖?

Flutter 有单例+;供应商在颤振/飞镖?,flutter,dart,Flutter,Dart,所以我正在开发一个颤振应用程序。我有一个单体游戏管理器,看起来像: class GameManager extends ChangeNotifier { static final GameManager _singleton = GameManager._internal(); factory GameManager() { return _singleton; } GameManager._internal(); } 在我的入口点main.dart中: @ov

所以我正在开发一个颤振应用程序。我有一个单体游戏管理器,看起来像:

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()),
      ],
    ...
  }
@覆盖
void initState(){
super.initState();
GameManager().连接(未连接:(){
DynamicClinksService().initDynamicClinks();
});
}
@凌驾
小部件构建(构建上下文){
回程多供应商(
供应商:[
ChangeNotifierProvider(创建:(上下文)=>GameManager()),
],
...
}
  • GameManager().connect()正在使用单例模式
  • 我使用main.dart中的Provider和页面中的Consumer来监听GameManager中的状态
  • 我之所以将其设置为单例,是因为connect()和使用GameManager的提供程序都位于main.dart中,我想在入口点调用connect()
  • 使用singleton+提供商/消费者可以吗?如果不可以,5是有效选项吗
  • 删除singleton。在我的主页中,通过消费者的GameManager调用connect