要恢复ScopedModel而不使用ScopedModelDescendant,可以使用ScopedModel.of
以下是一个示例:
import 'package:flutter/material.dart';
import 'package:scoped_model/scoped_model.dart';
class CounterModel extends Model {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners();
}
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final CounterModel counterModel = CounterModel();
@override
Widget build(BuildContext context) {
return ScopedModel(
model: counterModel,
child: MaterialApp(
title: 'ScopedModel Demo',
home: Scaffold(
appBar: AppBar(
title: Text('ScopedModel Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ScopedModelDescendant(
builder: (context, child, model) {
return Text(
'Count: ${model.count}',
style: TextStyle(fontSize: 24),
);
},
),
RaisedButton(
child: Text('Increment'),
onPressed: () {
counterModel.increment();
},
),
],
),
),
),
),
);
}
}
在这个示例中,CounterModel是一个继承自Model的自定义模型。ScopedModel.of
在MyApp中,我们创建了一个CounterModel实例,并将其传递给ScopedModel作为model属性。然后,我们可以在整个应用程序中使用ScopedModelDescendant来访问CounterModel的count属性,并在按下按钮时调用increment方法。
如果不想使用ScopedModelDescendant,可以使用ScopedModel.of