产品级Flutter开源项目FunAndroid,Provider MVVM的最佳实践
以下是一个使用Flutter和provider包实现的MVVM架构的简单示例:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
// 视图模型
class MyViewModel {
int counter = 0;
void increment() {
counter++;
}
}
// 视图
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 获取视图模型
final viewModel = Provider.of<MyViewModel>(context);
return Scaffold(
appBar: AppBar(title: Text('Flutter MVVM Example')),
body: Center(
child: Text(
'Button tapped ${viewModel.counter} time${viewModel.counter == 1 ? '' : 's'}.',
style: Theme.of(context).textTheme.headline4,
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => viewModel.increment(), // 调用视图模型中的方法
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
void main() {
runApp(
// 将视图模型提供给整个应用
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => MyViewModel()),
],
child: MaterialApp(home: MyHomePage()),
),
);
}
这个例子展示了如何使用Flutter的provider
包来实现MVVM模式。MyViewModel
类代表了视图模型,包含了应用逻辑。MyHomePage
是视图,它使用Provider.of<MyViewModel>(context)
来获取视图模型实例,并将其用于更新UI和响应用户事件。MultiProvider
则是用来在应用级别提供视图模型的。
评论已关闭