flutter_provider_demo

This commit is contained in:
2025-02-17 21:26:52 +08:00
commit 68259775e7
135 changed files with 5653 additions and 0 deletions

102
lib/main.dart Normal file
View File

@ -0,0 +1,102 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'pages/basic_provider_page.dart';
import 'pages/multi_provider_page.dart';
import 'pages/change_notifier_page.dart';
import 'pages/consumer_page.dart';
import 'pages/selector_page.dart';
import 'pages/future_provider_page.dart';
import 'pages/stream_provider_page.dart';
import 'pages/proxy_provider_page.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Provider Examples',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Provider Examples'),
),
body: ListView(
children: [
ListTile(
title: const Text('Basic Provider'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const BasicProviderPage()),
),
),
ListTile(
title: const Text('MultiProvider'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const MultiProviderPage()),
),
),
ListTile(
title: const Text('ChangeNotifierProvider'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const ChangeNotifierPage()),
),
),
ListTile(
title: const Text('Consumer'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const ConsumerPage()),
),
),
ListTile(
title: const Text('Selector'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const SelectorPage()),
),
),
ListTile(
title: const Text('FutureProvider'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const FutureProviderPage()),
),
),
ListTile(
title: const Text('StreamProvider'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const StreamProviderPage()),
),
),
ListTile(
title: const Text('ProxyProvider'),
onTap: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const ProxyProviderPage()),
),
),
],
),
);
}
}