1、首先,在pubspec.yaml
文件中添加shared_preferences
依赖:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.9
这里的版本你需要自己到官网选择下载:Dart package
2、运行flutter pub get
命令来获取依赖包。
3、在需要保存变量的地方,导入相关库:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
4、使用以下代码将变量保存到本地并进行赋值:
Future<void> saveVariable(int value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('my_variable', value);
}
Future<int> loadVariable() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getInt('my_variable') ?? 0;
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Save Variable Demo',
home: Scaffold(
appBar: AppBar(
title: Text('Save Variable Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
saveVariable(42).then((_) {
print('Variable saved successfully.');
}).catchError((error) {
print('Failed to save variable: $error');
});
},
child: Text('Save Variable'),
),
SizedBox(height: 16),
FutureBuilder<int>(
future: loadVariable(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final value = snapshot.data!;
return Text('My variable is: $value');
} else if (snapshot.hasError) {
return Text('Failed to load variable');
} else {
return CircularProgressIndicator();
}
},
),
],
),
),
),
);
}
}
在这个示例中,saveVariable
函数使用SharedPreferences.getInstance
方法获取SharedPreferences
实例,并使用setInt
方法将变量保存为整数值。loadVariable
函数使用getInt
方法从SharedPreferences
中读取变量的值。
你可以通过调用saveVariable
函数将要写入的变量保存到本地,然后通过调用loadVariable
函数来加载并赋值给其他变量。在这个例子中,我们在按钮点击时保存变量为42,并在界面上显示变量的值。
在shared_preferences
库中,数据会被保存在设备的本地存储中。具体来说,对于Android设备,数据将被保存在SharedPreferences文件中;而对于iOS设备,数据将被保存在NSUserDefaults中。
这些本地存储的位置是由操作系统管理的,并且对应用程序来说是私有的。这意味着其他应用程序无法访问你的应用程序保存的数据。
总之,当你调用SharedPreferences.getInstance()
方法时,它会返回一个SharedPreferences
实例,该实例提供了一组方法来保存和读取键值对数据,具体的存储位置是由底层操作系统决定的。你不需要关心具体的存储位置,只需通过相关方法进行存储和读取即可。
需要注意的是,shared_preferences
库适用于存储小型的键值对数据。如果你需要存储更复杂的数据结构,可以考虑使用其他持久化解决方案,如数据库或文件存储。