导入第三方
scoped_model: ^1.1.0
注意!1.1.0支持flutter2.0 低版本可能不支持Flutter2.0
通过上篇博客知道了我们如果导入多个控件
通过构造方法交互数据将会变的冗余。
直接上代码
import 'package:flutter/material.dart';
import 'package:scoped_model/scoped_model.dart';
class StateManagementDemo4 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ScopedModel(
model: CounterModel(),
child: Scaffold(
appBar: AppBar(
title: Text("StatueManagementDemo"),
elevation: 0.0,
),
body: ConunterWrapper(),
floatingActionButton: ScopedModelDescendant<CounterModel>(
rebuildOnChange: false,
builder: (context, _, model) => FloatingActionButton(
child: Icon(Icons.add),
onPressed: model.increaseCount,
),
),
),
);
;
}
}
class ConunterWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Counter(),
);
}
}
class Counter extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ScopedModelDescendant<CounterModel>(
builder: (context, _, model) => ActionChip(
label: Text('${model.count}'),
onPressed: model.increaseCount,
),
);
}
}
class CounterModel extends Model {
int _count = 0;
int get count => _count;
void increaseCount() {
_count += 1;
notifyListeners();
}
}