Skip to content

Commit

Permalink
Update of provider to v4.1.0 and related changes
Browse files Browse the repository at this point in the history
Flutter v1.17+ is required now.
  • Loading branch information
kaboc committed May 7, 2020
1 parent 481b62b commit 55a1d19
Show file tree
Hide file tree
Showing 17 changed files with 62 additions and 70 deletions.
1 change: 1 addition & 0 deletions analysis_options.yaml
Expand Up @@ -192,6 +192,7 @@ linter:
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_statements
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
# - unsafe_html # not yet tested
Expand Down
2 changes: 1 addition & 1 deletion lib/main.dart
Expand Up @@ -7,7 +7,7 @@ void main() => runApp(
title: 'provider examples',
theme: ThemeData(
textTheme: const TextTheme(
body1: TextStyle(fontSize: 32.0),
bodyText2: TextStyle(fontSize: 48.0),
),
),
),
Expand Down
14 changes: 9 additions & 5 deletions lib/pages/change_notifier_provider.dart
Expand Up @@ -25,10 +25,14 @@ class _FloatingButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<CnCounter>(context, listen: false);

return FloatingActionButton(
onPressed: counter.increment,
// OK
// - onPressed: () => context.read<CnCounter>().increment()
// - onPressed: context.watch<CnCounter>().increment
// Bad
// - onPressed: context.read<CnCounter>().increment
// - onPressed: () => context.watch<CnCounter>().increment()
onPressed: () => context.read<CnCounter>().increment(),
child: const Icon(Icons.add),
);
}
Expand All @@ -39,10 +43,10 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<CnCounter>(context);
final number = context.select((CnCounter counter) => counter.number);

return Center(
child: Text(counter.number.toString()),
child: Text(number.toString()),
);
}
}
4 changes: 2 additions & 2 deletions lib/pages/change_notifier_provider_value.dart
Expand Up @@ -41,10 +41,10 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<CnCounter>(context);
final number = context.select((CnCounter counter) => counter.number);

return Center(
child: Text(counter.number.toString()),
child: Text(number.toString()),
);
}
}
34 changes: 14 additions & 20 deletions lib/pages/dependency_injection.dart
Expand Up @@ -7,20 +7,14 @@ class DependencyInjectionPage extends StatelessWidget {

@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<CounterContainer>(
create: (_) => CounterContainer()..newCounter = DecCounter(),
),
Consumer<CounterContainer>(
builder: (_, container, child) {
return ChangeNotifierProvider<CounterInterface>.value(
value: container.counter,
child: child,
);
},
),
],
return ChangeNotifierProvider<CounterContainer>(
create: (_) => CounterContainer()..newCounter = DecCounter(),
builder: (context, child) {
return ChangeNotifierProvider<CounterInterface>.value(
value: context.watch<CounterContainer>().counter,
child: child,
);
},
child: Scaffold(
appBar: AppBar(
title: const Text('Dependency Injection'),
Expand All @@ -38,7 +32,7 @@ class _Switch extends StatelessWidget {

@override
Widget build(BuildContext context) {
final container = Provider.of<CounterContainer>(context);
final container = context.watch<CounterContainer>();
final counter = container.counter;

return Switch(
Expand All @@ -57,13 +51,13 @@ class _FloatingButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<CounterInterface>(context);
final type =
context.select((CounterInterface counter) => counter.runtimeType);

return FloatingActionButton(
onPressed: counter.increment,
onPressed: () => context.read<CounterInterface>().increment(),
child: const Icon(Icons.add),
backgroundColor:
counter.runtimeType == DecCounter ? Colors.blue : Colors.green,
backgroundColor: type == DecCounter ? Colors.blue : Colors.green,
);
}
}
Expand All @@ -73,7 +67,7 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<CounterInterface>(context);
final counter = context.watch<CounterInterface>();

return Center(
child: Column(
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/future_provider.dart
Expand Up @@ -28,7 +28,7 @@ class _FutureText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final description = Provider.of<String>(context);
final description = context.watch<String>();

return Center(
child: Text(
Expand Down
5 changes: 3 additions & 2 deletions lib/pages/listenable_provider.dart
Expand Up @@ -36,10 +36,11 @@ class _Spinner extends StatelessWidget {

@override
Widget build(BuildContext context) {
final controller = Provider.of<AnimationController>(context);
final value =
context.select((AnimationController controller) => controller.value);

return Transform.rotate(
angle: controller.value * 2.0 * math.pi,
angle: value * 2.0 * math.pi,
child: const SizedBox(
width: 200.0,
height: 200.0,
Expand Down
3 changes: 3 additions & 0 deletions lib/pages/provider.dart
Expand Up @@ -41,6 +41,9 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
// Using context.read<CounterBloc>() inside build() causes an exception.
// Either of Provider.of(), context.watch() or context.select() has to be
// used instead.
final bloc = Provider.of<CounterBloc>(context, listen: false);

return StreamBuilder<String>(
Expand Down
12 changes: 5 additions & 7 deletions lib/pages/proxy_provider.dart
Expand Up @@ -35,10 +35,8 @@ class _FloatingButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<VnCounter>(context, listen: false);

return FloatingActionButton(
onPressed: counter.increment,
onPressed: () => context.read<VnCounter>().increment(),
child: const Icon(Icons.add),
);
}
Expand All @@ -49,8 +47,8 @@ class _CounterResults extends StatelessWidget {

@override
Widget build(BuildContext context) {
final decCounter = Provider.of<VnCounter>(context);
final hexCounter = Provider.of<HexCounter>(context);
final dec = context.select((VnCounter counter) => counter.value);
final hex = context.select((HexCounter counter) => counter.hex);

return Center(
child: Column(
Expand All @@ -60,13 +58,13 @@ class _CounterResults extends StatelessWidget {
'Decimal',
style: TextStyle(fontSize: 16.0),
),
Text(decCounter.value.toString()),
Text(dec.toString()),
const SizedBox(height: 32.0),
const Text(
'Hexadecimal',
style: TextStyle(fontSize: 16.0),
),
Text(hexCounter.hex),
Text(hex),
],
),
);
Expand Down
33 changes: 13 additions & 20 deletions lib/pages/proxy_provider0.dart
Expand Up @@ -8,19 +8,14 @@ class ProxyProvider0Page extends StatelessWidget {

@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<VnCounter>(
create: (_) => VnCounter(),
),
Consumer<VnCounter>(
builder: (_, vnCounter, child) => ProxyProvider0<HexCounter>(
create: (_) => HexCounter(),
update: (_, prev) => prev..newValue = vnCounter.value,
child: child,
),
),
],
return ChangeNotifierProvider<VnCounter>(
create: (_) => VnCounter(),
builder: (context, child) => ProxyProvider0<HexCounter>(
create: (_) => HexCounter(),
update: (_, prev) => prev
..newValue = context.select((VnCounter vnCounter) => vnCounter.value),
child: child,
),
child: Scaffold(
appBar: AppBar(
title: const Text('ProxyProvider0()'),
Expand All @@ -37,10 +32,8 @@ class _FloatingButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<VnCounter>(context, listen: false);

return FloatingActionButton(
onPressed: counter.increment,
onPressed: () => context.read<VnCounter>().increment(),
child: const Icon(Icons.add),
);
}
Expand All @@ -51,8 +44,8 @@ class _CounterResults extends StatelessWidget {

@override
Widget build(BuildContext context) {
final decCounter = Provider.of<VnCounter>(context);
final hexCounter = Provider.of<HexCounter>(context);
final dec = context.select((VnCounter counter) => counter.value);
final hex = context.select((HexCounter counter) => counter.hex);

return Center(
child: Column(
Expand All @@ -62,13 +55,13 @@ class _CounterResults extends StatelessWidget {
'Decimal',
style: TextStyle(fontSize: 16.0),
),
Text(decCounter.value.toString()),
Text(dec.toString()),
const SizedBox(height: 32.0),
const Text(
'Hexadecimal',
style: TextStyle(fontSize: 16.0),
),
Text(hexCounter.hex),
Text(hex),
],
),
);
Expand Down
4 changes: 1 addition & 3 deletions lib/pages/selector.dart
Expand Up @@ -25,10 +25,8 @@ class _FloatingButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
final counter = Provider.of<CnCounter>(context);

return FloatingActionButton(
onPressed: counter.increment,
onPressed: () => context.read<CnCounter>().increment(),
child: const Icon(Icons.add),
);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/stream_provider.dart
Expand Up @@ -43,7 +43,7 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final number = Provider.of<int>(context);
final number = context.watch<int>();

return Center(
child: Text(number.toString()),
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/stream_provider_value.dart
Expand Up @@ -43,7 +43,7 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final number = Provider.of<int>(context);
final number = context.watch<int>();

return Center(
child: Text(number.toString()),
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/value_listenable_provider.dart
Expand Up @@ -30,7 +30,7 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final number = Provider.of<int>(context);
final number = context.watch<int>();

return Center(
child: Text(number.toString()),
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/value_listenable_provider_value.dart
Expand Up @@ -41,7 +41,7 @@ class _CounterText extends StatelessWidget {

@override
Widget build(BuildContext context) {
final number = Provider.of<int>(context);
final number = context.watch<int>();

return Center(
child: Text(number.toString()),
Expand Down
8 changes: 4 additions & 4 deletions pubspec.lock
Expand Up @@ -7,7 +7,7 @@ packages:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.14.11"
version: "1.14.12"
flutter:
dependency: "direct main"
description: flutter
Expand All @@ -33,7 +33,7 @@ packages:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.5"
version: "4.1.0"
sky_engine:
dependency: transitive
description: flutter
Expand All @@ -54,5 +54,5 @@ packages:
source: hosted
version: "2.0.8"
sdks:
dart: ">=2.2.2 <3.0.0"
flutter: ">=1.12.1"
dart: ">=2.7.0 <3.0.0"
flutter: ">=1.17.0"
2 changes: 1 addition & 1 deletion pubspec.yaml
Expand Up @@ -10,7 +10,7 @@ dependencies:
flutter:
sdk: flutter

provider: ^4.0.5
provider: ^4.1.0

flutter:
uses-material-design: true

0 comments on commit 55a1d19

Please sign in to comment.