Flutter 如何在本地文件中保存和加载数据?
我是颤振新手,我想将数据保存到本地文件中,并在打开屏幕时加载。 有什么帮助吗?您可以使用软件包。下面是一个例子Flutter 如何在本地文件中保存和加载数据?,flutter,Flutter,我是颤振新手,我想将数据保存到本地文件中,并在打开屏幕时加载。 有什么帮助吗?您可以使用软件包。下面是一个例子 import 'dart:async'; import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; void main() { runA
import 'dart:async';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
void main() {
runApp(
MaterialApp(
title: 'Reading and Writing Files',
home: FlutterDemo(storage: CounterStorage()),
),
);
}
class CounterStorage {
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<File> get _localFile async {
final path = await _localPath;
return File('$path/counter.txt');
}
Future<int> readCounter() async {
try {
final file = await _localFile;
// Read the file
String contents = await file.readAsString();
return int.parse(contents);
} catch (e) {
// If encountering an error, return 0
return 0;
}
}
Future<File> writeCounter(int counter) async {
final file = await _localFile;
// Write the file
return file.writeAsString('$counter');
}
}
class FlutterDemo extends StatefulWidget {
final CounterStorage storage;
FlutterDemo({Key key, @required this.storage}) : super(key: key);
@override
_FlutterDemoState createState() => _FlutterDemoState();
}
class _FlutterDemoState extends State<FlutterDemo> {
int _counter;
@override
void initState() {
super.initState();
widget.storage.readCounter().then((int value) {
setState(() {
_counter = value;
});
});
}
Future<File> _incrementCounter() {
setState(() {
_counter++;
});
// Write the variable as a string to the file.
return widget.storage.writeCounter(_counter);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Reading and Writing Files')),
body: Center(
child: Text(
'Button tapped $_counter time${_counter == 1 ? '' : 's'}.',
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
导入'dart:async';
导入“dart:io”;
进口“包装:颤振/基础.dart”;
进口“包装:颤振/材料.省道”;
导入“package:path_provider/path_provider.dart”;
void main(){
runApp(
材料聚丙烯(
标题:“读取和写入文件”,
主页:flatterdemo(存储:CounterStorage()),
),
);
}
类反存储{
未来获取\u本地路径异步{
最终目录=等待getApplicationDocumentsDirectory();
返回directory.path;
}
未来获取\u本地文件异步{
最终路径=等待_localPath;
返回文件(“$path/counter.txt”);
}
Future readCounter()异步{
试一试{
final file=wait\u localFile;
//读文件
String contents=wait file.readAsString();
返回int.parse(contents);
}捕获(e){
//如果遇到错误,则返回0
返回0;
}
}
未来写计数器(int计数器)异步{
final file=wait\u localFile;
//写文件
返回文件.writeAsString(“$counter”);
}
}
类扩展StatefulWidget{
最终反储存储存;
flatterdemo({Key-Key,@required this.storage}):super(Key:Key);
@凌驾
_FlatterDemoState createState();
}
类(状态扩展状态){
内部计数器;
@凌驾
void initState(){
super.initState();
widget.storage.readCounter().then((int值){
设置状态(){
_计数器=值;
});
});
}
未来_递增计数器(){
设置状态(){
_计数器++;
});
//将变量作为字符串写入文件。
返回widget.storage.writeCounter(_计数器);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“读写文件”),
正文:中(
子:文本(
'按钮点击$\u计数器时间${\u计数器==1?''s'}',
),
),
浮动操作按钮:浮动操作按钮(
按下时:\ u递增计数器,
工具提示:“增量”,
子:图标(Icons.add),
),
);
}
}
您所说的是什么类型的数据?