Skip to content

Commit 89782fa

Browse files
committed
fix: change to notifierprovider
1 parent f5c78a9 commit 89782fa

9 files changed

+153
-246
lines changed

analysis_options.yaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
# packages, and plugins designed to encourage good coding practices.
1010
include: package:flutter_lints/flutter.yaml
1111

12+
analyzer:
13+
plugins:
14+
- custom_lint
15+
1216
linter:
1317
# The lint rules applied to this project can be customized in the
1418
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
@@ -23,6 +27,5 @@ linter:
2327
rules:
2428
# avoid_print: false # Uncomment to disable the `avoid_print` rule
2529
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
26-
2730
# Additional information about this file can be found at
2831
# https://dart.dev/guides/language/analysis-options

lib/models/counter_model.dart

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import 'package:freezed_annotation/freezed_annotation.dart';
1+
import 'package:riverpod_annotation/riverpod_annotation.dart';
22

3-
part 'counter_model.freezed.dart';
43
part 'counter_model.g.dart';
54

6-
@freezed
7-
class CounterModel with _$CounterModel {
8-
factory CounterModel({
9-
@Default(0) int counter,
10-
}) = _CounterModel;
5+
@riverpod
6+
class Counter extends _$Counter {
7+
@override
8+
int build() => 0;
119

12-
factory CounterModel.fromJson(Map<String, dynamic> json) =>
13-
_$CounterModelFromJson(json);
10+
void increment() => state++;
11+
12+
void decrement() => state--;
1413
}

lib/models/counter_model.freezed.dart

-152
This file was deleted.

lib/models/counter_model.g.dart

+16-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/providers/counter_provider.dart

-18
This file was deleted.

lib/views/android/counter_view.dart

+6-14
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_riverpod/flutter_riverpod.dart';
3-
import 'package:riverpod_counter_app/providers/counter_provider.dart';
3+
import 'package:riverpod_counter_app/models/counter_model.dart';
44

5-
class CounterView extends ConsumerStatefulWidget {
5+
class CounterView extends ConsumerWidget {
66
const CounterView({super.key});
77

88
@override
9-
ConsumerState<ConsumerStatefulWidget> createState() => _CounterViewState();
10-
}
11-
12-
class _CounterViewState extends ConsumerState<CounterView> {
13-
@override
14-
Widget build(BuildContext context) {
15-
final counterRepo = ref.read(counterProvider.notifier);
16-
final counterState = ref.watch(counterProvider);
17-
9+
Widget build(BuildContext context, WidgetRef ref) {
1810
return MaterialApp(
1911
title: 'Flutter Demo',
2012
theme: ThemeData(
@@ -34,19 +26,19 @@ class _CounterViewState extends ConsumerState<CounterView> {
3426
'You have pushed the button this many times:',
3527
),
3628
Text(
37-
counterState.counter.toString(),
29+
'${ref.watch(counterProvider)}',
3830
style: Theme.of(context).textTheme.headlineMedium,
3931
),
4032
],
4133
),
4234
),
4335
floatingActionButton: FloatingActionButton(
4436
onPressed: () {
45-
counterRepo.increment();
37+
ref.read(counterProvider.notifier).increment();
4638
},
4739
tooltip: 'Increment',
4840
child: const Icon(Icons.add),
49-
), // This trailing comma makes auto-formatting nicer for build methods.
41+
),
5042
),
5143
);
5244
}

lib/views/ios/counter_view.dart

+10-13
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter_riverpod/flutter_riverpod.dart';
3-
import 'package:riverpod_counter_app/providers/counter_provider.dart';
3+
import 'package:riverpod_counter_app/models/counter_model.dart';
44

5-
class CounterView extends ConsumerStatefulWidget {
5+
class CounterView extends ConsumerWidget {
66
const CounterView({super.key});
77

88
@override
9-
ConsumerState<ConsumerStatefulWidget> createState() => _CounterViewState();
10-
}
11-
12-
class _CounterViewState extends ConsumerState<CounterView> {
13-
@override
14-
Widget build(BuildContext context) {
15-
final counterRepo = ref.read(counterProvider.notifier);
16-
final counterState = ref.watch(counterProvider);
17-
9+
Widget build(BuildContext context, WidgetRef ref) {
1810
return CupertinoApp(
1911
theme: const CupertinoThemeData(brightness: Brightness.light),
2012
home: CupertinoPageScaffold(
@@ -28,13 +20,18 @@ class _CounterViewState extends ConsumerState<CounterView> {
2820
mainAxisAlignment: MainAxisAlignment.center,
2921
children: [
3022
Text(
31-
'You have pressed the button ${counterState.counter.toString()} times.',
23+
'You have pressed the button ${ref.watch(counterProvider)} times.',
3224
),
3325
const SizedBox(height: 20.0),
3426
CupertinoButton.filled(
35-
onPressed: () => setState(() => counterRepo.increment()),
27+
onPressed: () => ref.read(counterProvider.notifier).increment(),
3628
child: const Icon(CupertinoIcons.add),
3729
),
30+
const SizedBox(height: 20.0),
31+
CupertinoButton.filled(
32+
onPressed: () => ref.read(counterProvider.notifier).decrement(),
33+
child: const Icon(CupertinoIcons.minus),
34+
),
3835
],
3936
),
4037
),

0 commit comments

Comments
 (0)