建议先将Flutter官方文档过一遍,本系列教程 Flutter SDK >= 3.10.0
上图就是为什么我选择了Provider
(ps: 在GetX和Provider中纠结的的一批)
flutter pub add provider
// stores/entrance.dart
import 'package:flutter/material.dart';
class GlobalStore extends ChangeNotifier {
String? test = "";
}
// app.dart
import 'package:flutter/material.dart';
import 'package:lhdht_flutter_app/routes/route.dart';
import 'package:lhdht_flutter_app/stores/global.dart';
import 'package:provider/provider.dart';
class AppEntrance extends StatefulWidget {
const AppEntrance({super.key});
State<AppEntrance> createState() => _App();
}
class _App extends State<AppEntrance> {
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => GlobalStore()),
],
child: MaterialApp.router(
routerConfig: setupRouter,
),
);
}
}
// pages/home/entrance.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:lhdht_flutter_app/stores/global.dart';
class HomePageEntrance extends StatelessWidget {
const HomePageEntrance({super.key});
Widget build(BuildContext context) {
final globalStore = context.watch<GlobalStore>();
return Center(
child: Column(
children: [
Text("home page ${globalStore.test}"),
TextButton(onPressed: () {
globalStore.test = "123";
}, child: const Text("点击修改"))
],
),
);
}
}