- Provider 是对InheritedWidget的封装
- https://pub.dev/packages/provider
- 优点:
- Provider
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Flutter",
home: Home(),
debugShowCheckedModeBanner: false,
);
}
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create:(BuildContext context)=>new LikesModel(),
child: Scaffold(
appBar: AppBar(
title: Text("LikesModel"),
leading: Icon(Icons.menu),
actions: [Icon(Icons.settings)],
elevation: 0.0,
centerTitle: true,
),
body: MyHomePage(),
),
);
}
}
class LikesModel extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
incrementCounter() {
_counter++;
notifyListeners();
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
Text(
"${ context.watch<LikesModel>().counter }",
),
TextButton(
onPressed:Provider.of<LikesModel>(context).incrementCounter,
child: Icon(Icons.thumb_up),
),
],
),
);
}
}