87 lines
1.9 KiB
Dart
87 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class CounterA extends ChangeNotifier {
|
|
int _count = 0;
|
|
int get count => _count;
|
|
|
|
void increment() {
|
|
_count++;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
class CounterB extends ChangeNotifier {
|
|
int _count = 0;
|
|
int get count => _count;
|
|
|
|
void increment() {
|
|
_count++;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
class MultiProviderPage extends StatelessWidget {
|
|
const MultiProviderPage({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider(create: (_) => CounterA()),
|
|
ChangeNotifierProvider(create: (_) => CounterB()),
|
|
],
|
|
child: Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text('MultiProvider Example'),
|
|
),
|
|
body: const Center(
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
CounterAWidget(),
|
|
SizedBox(height: 20),
|
|
CounterBWidget(),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class CounterAWidget extends StatelessWidget {
|
|
const CounterAWidget({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Column(
|
|
children: [
|
|
Text('Counter A: ${context.watch<CounterA>().count}'),
|
|
Text('Counter B: ${context.watch<CounterB>().count}'),
|
|
ElevatedButton(
|
|
onPressed: () => context.read<CounterA>().increment(),
|
|
child: const Text('Increment Counter A'),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|
|
class CounterBWidget extends StatelessWidget {
|
|
const CounterBWidget({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Column(
|
|
children: [
|
|
Text('Counter B: ${context.watch<CounterB>().count}'),
|
|
ElevatedButton(
|
|
onPressed: () => context.read<CounterB>().increment(),
|
|
child: const Text('Increment Counter B'),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|