flutter持久化存储数据
时间: 2023-10-18 21:06:02 浏览: 103
Flutter提供了多种持久化存储数据的方法,包括:
1. Shared Preferences:用于存储键值对,适合存储简单的数据,如用户设置、应用程序配置等。
2. SQLite数据库:用于存储结构化数据,适合存储大量数据和复杂数据,如用户信息、应用程序数据等。
3. 文件存储:用于存储大型二进制数据,如图像、音频、视频等。
下面是使用Shared Preferences进行数据持久化的示例代码:
```dart
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _name = '';
@override
void initState() {
super.initState();
_loadName();
}
void _loadName() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_name = prefs.getString('name') ?? '';
});
}
void _saveName(String name) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('name', name);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Hello, $_name!',
style: Theme.of(context).textTheme.headline4,
),
TextField(
onChanged: (value) => _saveName(value),
),
],
),
),
);
}
}
```
在这个示例中,我们使用SharedPreferences来存储用户的名字。在初始化时,我们会调用_loadName()方法来加载存储在SharedPreferences中的名字。在用户输入名字后,我们会调用_saveName()方法来保存名字。每当名字发生变化时,UI会自动更新。
阅读全文