flutter输入实现本地数据持久化
时间: 2023-09-03 21:09:57 浏览: 245
数据持久化
Flutter中实现本地数据持久化有多种方式,比如使用shared_preferences、sqflite、path_provider等插件。下面以shared_preferences为例,介绍如何实现输入数据的本地存储和读取。
首先,在`pubspec.yaml`文件中添加依赖:
```yaml
dependencies:
shared_preferences: ^2.0.6
```
然后,在需要存储数据的页面,我们可以使用如下代码将输入的数据存储到本地:
```dart
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class InputPage extends StatefulWidget {
@override
_InputPageState createState() => _InputPageState();
}
class _InputPageState extends State<InputPage> {
TextEditingController _textEditingController = TextEditingController();
String _inputData = '';
@override
void initState() {
super.initState();
_loadData();
}
@override
void dispose() {
_textEditingController.dispose();
super.dispose();
}
Future<void> _loadData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_inputData = prefs.getString('input_data') ?? '';
_textEditingController.text = _inputData;
});
}
Future<void> _saveData(String data) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('input_data', data);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('输入页面'),
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'请输入数据:',
style: TextStyle(
fontSize: 16.0,
),
),
SizedBox(height: 10.0),
TextField(
controller: _textEditingController,
onChanged: (value) {
_saveData(value);
},
decoration: InputDecoration(
hintText: '请输入',
),
),
SizedBox(height: 20.0),
Text(
'输入的数据是:$_inputData',
style: TextStyle(
fontSize: 16.0,
),
),
],
),
),
);
}
}
```
在上面的代码中,我们首先在`initState`方法中调用了`_loadData`方法,从本地存储中加载数据并将其设置到文本输入框中。`_loadData`方法中,我们使用`SharedPreferences`插件获取实例,并调用`getString`方法获取之前存储的数据,如果之前没有存储数据则返回默认值''。然后,我们在`TextField`的`onChanged`回调中调用`_saveData`方法,将输入的数据保存到本地。`_saveData`方法中,我们同样使用`SharedPreferences`插件获取实例,并调用`setString`方法将数据存储到本地。
这样,输入的数据就可以实现本地持久化了。每次打开应用时,都会从本地存储中加载之前输入的数据,并将其设置到文本输入框中。如果用户修改了输入的数据,就会自动保存到本地。
阅读全文