我正在努力将块模式放入我的 Flutter 应用程序中。我使用这个库是为了让它对我来说更简单: https: //felangel.github.io/bloc/#/
\n\n我有一个主要问题。如何让我的 Bloc 在全球范围内都可访问,而不需要一次又一次地传递下去?
\n\n这是我的代码:
\n\n主要.dart:
\n\nimport \'package:flutter/material.dart\';\nimport \'package:flutter_bloc/flutter_bloc.dart\';\n\nimport \'db_bloc.dart\';\nimport \'NotesPage.dart\';\n\nvoid main() => runApp(MyApp());\n\nclass MyApp extends StatefulWidget {\n @override\n State<StatefulWidget> createState() => MyAppState();\n}\n\nclass MyAppState extends State<MyApp> {\n final DatabaseBloc _dbNoteBloc = DatabaseBloc();\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: \'Flutter Demo\',\n home: BlocProvider<DatabaseBloc>(\n bloc: _dbNoteBloc,\n child: NotesPage(),\n ),\n );\n }\n\n @override\n void dispose() {\n _dbNoteBloc.dispose();\n super.dispose();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n注释页:
\n\nimport \'package:flutter/material.dart\';\nimport \'package:flutter_bloc/flutter_bloc.dart\';\n\nimport \'db_bloc.dart\';\nimport \'note_model.dart\';\n\nclass NotesPage extends StatefulWidget {\n _NotesPageState createState() …Run Code Online (Sandbox Code Playgroud) 我已经没有想法了。
我使用 Mobx 进行非常简单的状态管理。
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:jw_helper/state/globalState.dart';
class Router extends StatelessWidget {
const Router({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
final _globalState = GlobalState();
return Column(
children: <Widget>[
Container(
child: Observer(
builder: (_) => Text(_globalState?.currentIndex?.toString()),
),
),
MaterialButton(
onPressed: () {
_globalState.setCurrentIndex(1);
},
child: Text("Press me"),
),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
当我改变这个小部件中的状态时,值会更新。当我在另一个小部件中改变相同的 Observable 时,观察者不会重建。
只有状态发生变化的同一个 Widget 中的观察者才会被更新。
我的 Mobx 代码:
import 'package:mobx/mobx.dart';
// Include generated file
part 'globalState.g.dart';
// This is the class used …Run Code Online (Sandbox Code Playgroud)