这个代码示例是一个简单的Flutter应用程序,它使用了GitHub上流行的一个Flutter状态管理库scoped\_model来管理应用程序的状态。
import 'package:flutter/material.dart';
import 'package:scoped_model/scoped_model.dart';
// 定义应用程序的状态类
class AppStateModel extends Model {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners(); // 通知所有监听器状态已更新
}
}
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// 创建AppStateModel实例并传递给MaterialApp
final AppStateModel appState = AppStateModel();
@override
Widget build(BuildContext context) {
return ScopedModel<AppStateModel>(
model: appState,
child: MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
),
);
}
}
// 定义一个无状态的Widget,它使用ScopedModelDescendant来访问状态
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo'),
),
body: Center(
child: ScopedModelDescendant<AppStateModel>(
builder: (context, child, model) {
return Text(
'You have pushed the button this many times:',
);
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => ScopedModel.of<AppStateModel>(context).increment(),
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
这段代码首先定义了一个名为AppStateModel
的类,它包含了一个计数器和一个用于增加计数器值的方法。在main
方法中,它创建了AppStateModel
的实例,并将其作为ScopedModel
传递给了MaterialApp
。在MyHomePage
中,它使用ScopedModelDescendant
来访问状态并更新界面。这个例子展示了如何在Flutter应用程序中使用scoped\_model库来管理和共享应用程序状态。