Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从文件中读取文件?_Flutter_Dart - Fatal编程技术网

Flutter 如何从文件中读取文件?

Flutter 如何从文件中读取文件?,flutter,dart,Flutter,Dart,我有将数据写入文件的代码(例如应用程序的全局设置)。我写下数据,然后看。但问题是我不明白如何从另一个页面获取这些小数据。例如,我写了单词“Test”,我想,我想把这个单词分配给另一个页面中的某个变量。我将感谢你的帮助。这是我的密码: 导入'dart:io'; 导入“dart:async”; 导入“package:path_provider/path_provider.dart”; 进口“包装:颤振/材料.省道”; 进口“包装:颤振/基础.dart”; void main()=>runApp(新

我有将数据写入文件的代码(例如应用程序的全局设置)。我写下数据,然后看。但问题是我不明白如何从另一个页面获取这些小数据。例如,我写了单词“Test”,我想,我想把这个单词分配给另一个页面中的某个变量。我将感谢你的帮助。这是我的密码:

导入'dart:io';
导入“dart:async”;
导入“package:path_provider/path_provider.dart”;
进口“包装:颤振/材料.省道”;
进口“包装:颤振/基础.dart”;
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“读写存储器”,
家:家(
存储:存储(),
),
);
}
}
类Home扩展了StatefulWidget{
最终储存;
Home({Key Key,@required this.storage}):super(Key:Key);
@凌驾
HomeState createState()=>HomeState();
}
类HomeState扩展到State{
TextEditingController=TextEditingController();
字符串状态;
未来(appDocDir);
@凌驾
void initState(){
super.initState();
widget.storage.readData().then((字符串值){
设置状态(){
状态=值;
});
});
}
Future writeData()异步{
设置状态(){
state=controller.text;
controller.text='';
});
返回widget.storage.writeData(状态);
}
void getAppDirectory(){
设置状态(){
_appDocDir=getApplicationDocumentsDirectory();
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“读写文件”),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
文本(“${state???”文件为空“}”),
文本字段(
控制器:控制器,
),
升起的按钮(
onPressed:writeData,
子项:文本(“写入文件”),
),
升起的按钮(
子:文本(“获取目录路径”),
onPressed:getAppDirectory,
),
未来建设者(
未来:_appDocDir,
建设者:
(BuildContext上下文,异步快照){
文本文本=文本(“”);
if(snapshot.connectionState==connectionState.done){
if(snapshot.hasError){
text=text('Error:${snapshot.Error}');
}else if(snapshot.hasData){
text=text('Path:${snapshot.data.Path}');
}否则{
text=文本(“不可用”);
}
}
退回新货柜(
孩子:文本,
);
},
)
],
),
),
);
}
}
类存储{
未来获取本地路径异步{
final dir=等待getApplicationDocumentsDirectory();
返回目录路径;
}
未来获取本地文件异步{
最终路径=等待本地路径;
返回文件(“$path/db.txt”);
}
Future readData()异步{
试一试{
最终文件=等待本地文件;
String body=wait file.readAsString();
返回体;
}捕获(e){
返回e.toString();
}
}
未来写入数据(字符串数据)异步{
最终文件=等待本地文件;
返回文件.writeAsString($data”);
}

}
您可以使用导航器和参数将值传递到其他页面。

class NewScreen extends StatelessWidget {
    final String data;

    NewScreen({this.data});
    ...
}
当您使用“主页”上的导航器进入“新闻屏幕”时,
传递您传输的数据

Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) => NewScreen(data: 'Test'),
    ),
);