在Flutter中保存变量并使其可供所有文件访问,可以使用全局状态管理或共享偏好设置的方式。
dependencies:
flutter:
sdk: flutter
provider: ^6.0.1
AppState
的类:import 'package:flutter/material.dart';
class AppState extends ChangeNotifier {
String myVariable = '';
void updateVariable(String newValue) {
myVariable = newValue;
notifyListeners();
}
}
ChangeNotifierProvider
包装MaterialApp
,以便在整个应用程序中共享状态:import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => AppState(),
child: MyApp(),
),
);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
home: MyHomePage(),
);
}
}
Provider.of
或Consumer
来获取和使用全局状态:import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
var appState = Provider.of<AppState>(context);
return Scaffold(
appBar: AppBar(
title: Text('My Home Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(appState.myVariable),
ElevatedButton(
onPressed: () {
appState.updateVariable('New Value');
},
child: Text('Update Variable'),
),
],
),
),
);
}
}
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.10
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class MyPage extends StatelessWidget {
final myVariableKey = 'myVariable';
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(myVariableKey, 'New Value');
},
child: Text('Save Variable'),
);
}
}
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AnotherPage extends StatelessWidget {
final myVariableKey = 'myVariable';
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: _getVariable(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data!);
} else {
return CircularProgressIndicator();
}
},
);
}
Future<String> _getVariable() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(myVariableKey) ?? '';
}
}
通过以上两种方式,你可以在Flutter中保存变量并使其可供所有文件访问。请注意,这只是两种常见的方法之一,根据你的需求和项目复杂性,还可以使用其他状态管理库或数据持久化方案。
领取专属 10元无门槛券
手把手带您无忧上云