728x90
family를 이용하면 Provider에 매개변수를 추가할 수 있다.
.family를 붙이고, 매개변수 타입을 명시한다.
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final counterProvider = NotifierProvider.family<Counter, int, int>(() {
return Counter();
});
class Counter extends FamilyNotifier<int, int> {
@override
int build(int initValue) => initValue;
void increment() => state++;
}
void main() {
runApp(
const ProviderScope(
child: MaterialApp(
debugShowCheckedModeBanner: false,
home: MyApp(),
),
),
);
}
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
int counter = ref.watch(counterProvider(10));
return Scaffold(
body: Center(
child: Text(
"$counter",
style: const TextStyle(
fontSize: 24,
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: ref.read(counterProvider(10).notifier).increment,
child: const Icon(Icons.add),
),
);
}
}
|
counterProvider(10)과 같이 원하는 초기값을 전달할 수 있다.
ref.read(counterProvider(10))에서도 처음 전달한 매개 변수와 동일한 값을 전달해야 한다.
728x90
'Flutter 앱 > 상태관리' 카테고리의 다른 글
Flutter Riverpod 예제 : Bucket List (0) | 2023.12.27 |
---|---|
Flutter StatefulWidget (0) | 2023.12.13 |
Flutter Riverpod - NotifierProvider (0) | 2023.12.11 |
Flutter riverpod - StateProvider (0) | 2023.11.23 |
Flutter GetX (반응형 상태관리) (0) | 2022.06.24 |