Flutter依赖注入与状态观察插件observable_locator的使用
Flutter依赖注入与状态观察插件observable_locator
的使用
observable_locator
是一个服务定位器,它使用 MobX
来简化API并创建反应式依赖关系。
如何使用
首先,确保在您的项目中添加了observable_locator
依赖。在pubspec.yaml
文件中添加以下依赖:
dependencies:
observable_locator: ^x.y.z
然后运行flutter pub get
以安装该库。
接下来,我们来创建一些基本的代码结构,以便展示如何使用observable_locator
。
import 'package:flutter/material.dart';
import 'package:observable_locator/observable_locator.dart';
// 创建一个简单的模型类,用于演示
class Counter with Store {
@observable
int value = 0;
@action
void increment() {
value++;
}
}
// 主应用
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: CounterPage(),
);
}
}
class CounterPage extends StatelessWidget {
final counter = Counter(); // 实例化Counter模型
@override
Widget build(BuildContext context) {
return Provider<Counter>(
create: (_) => counter,
child: Scaffold(
appBar: AppBar(title: Text('Observable Locator Demo')),
body: Center(
child: Observer(
builder: (_) => Text('${counter.value}'),
),
),
floatingActionButton: FloatingActionButton(
onPressed: counter.increment,
tooltip: 'Increment',
child: Icon(Icons.add),
),
),
);
}
}
详细说明
-
引入必要的库:
import 'package:flutter/material.dart'; import 'package:observable_locator/observable_locator.dart';
-
定义一个简单的模型类:
class Counter with Store { @observable int value = 0; @action void increment() { value++; } }
-
主应用部分:
void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: CounterPage(), ); } }
-
创建一个页面,使用
Provider
和Observer
:class CounterPage extends StatelessWidget { final counter = Counter(); @override Widget build(BuildContext context) { return Provider<Counter>( create: (_) => counter, child: Scaffold( appBar: AppBar(title: Text('Observable Locator Demo')), body: Center( child: Observer( builder: (_) => Text('${counter.value}'), ), ), floatingActionButton: FloatingActionButton( onPressed: counter.increment, tooltip: 'Increment', child: Icon(Icons.add), ), ), ); } }
更多关于Flutter依赖注入与状态观察插件observable_locator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter依赖注入与状态观察插件observable_locator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,依赖注入(Dependency Injection, DI)和状态管理是非常重要的概念。observable_locator
是一个结合了依赖注入和状态观察的插件,它基于 get_it
和 mobx
,提供了一种简单的方式来管理依赖和观察状态变化。
1. 安装依赖
首先,你需要在 pubspec.yaml
文件中添加 observable_locator
依赖:
dependencies:
flutter:
sdk: flutter
observable_locator: ^1.0.0
然后运行 flutter pub get
来安装依赖。
2. 基本使用
2.1 注册依赖
你可以使用 ObservableLocator
来注册依赖。通常在你的应用启动时完成这个操作。
import 'package:observable_locator/observable_locator.dart';
void main() {
// 注册依赖
ObservableLocator.instance.registerSingleton<MyService>(() => MyService());
runApp(MyApp());
}
2.2 获取依赖
在需要的地方,你可以通过 ObservableLocator.instance.get<T>()
来获取依赖。
class MyService {
void doSomething() {
print('Doing something!');
}
}
class MyWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
final myService = ObservableLocator.instance.get<MyService>();
myService.doSomething();
return Container();
}
}
2.3 观察状态
observable_locator
支持使用 mobx
来观察状态变化。首先,你需要定义一个可观察的类:
import 'package:mobx/mobx.dart';
part 'counter.g.dart';
class Counter = _Counter with _$Counter;
abstract class _Counter with Store {
@observable
int count = 0;
@action
void increment() {
count++;
}
}
然后,你可以在 ObservableLocator
中注册这个类:
void main() {
ObservableLocator.instance.registerSingleton<Counter>(() => Counter());
runApp(MyApp());
}
在 UI 中,你可以使用 Observer
来观察状态变化:
import 'package:flutter/material.dart';
import 'package:mobx/mobx.dart';
import 'package:observable_locator/observable_locator.dart';
class CounterWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
final counter = ObservableLocator.instance.get<Counter>();
return Observer(
builder: (_) {
return Text('Count: ${counter.count}');
},
);
}
}