一个ChangeNotifier的示例, 先with一个ChangeNotifier变成数据新类,然后使用ListenableBuilder监听数据即可。
import 'package:flutter/material.dart';
void main(List<String> args) {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: const HomePage(),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),
onPressed: () {
c1.increase();
},
),
),
),
);
}
class CounterData with ChangeNotifier {
int _count = 0;
int get count => _count;
void increase() {
_count++;
notifyListeners();
}
}
CounterData c1 = CounterData();
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Center(
child: Column(
children: [
ListenableBuilder(
listenable: c1,
builder: (context, child) {
return Text("${c1.count}");
},
),
ListenableBuilder(
listenable: c1,
builder: (context, child) {
return Text(
"${c1.count}",
style: const TextStyle(color: Colors.red),
);
},
),
],
));
}
}