首先此代码有一个新屏幕并调用您的代码:
child:
FlatButton(
onPressed: () {
Navigator.pushNamed(context, '/indled');
setState(() {
ReadFile(fileName: 'myfile.txt');
print('Button 1 got pressed');
});
},
......
它打印按钮 1 在控制台上被按下并进入新屏幕,其中包含代码:
class Indled extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Indledning'),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
child: Container(
padding: EdgeInsets.all(8.0),
child: Text('Indledning 2'),
它在屏幕上打印“Indledning 2”作为测试,但没有任何反应。我在一个单独的文件中有如下代码:
class ReadFile {
ReadFile({this.fileName});
final String fileName;
Future<void> readMyFile() async {
Directory directory = await getApplicationDocumentsDirectory();
var _localFilePath = (directory.path + "myfile.txt");
if (FileSystemEntity.typeSync(_localFilePath) ==
FileSystemEntityType.file) {
final myFile = await _localFile(_localFilePath);
List<String> linesAsList = myFile.readAsLinesSync();
for (var i = 0; i < linesAsList.length; i++) {
//print("Line No: " + i.toString() + "\n");
print(linesAsList[i]);
}
}
}
Future<File> _localFile(String myPath) async {
return File(myPath);
}
}
上线:List linesAsList = await myFile.readAsLinesSync();
我在等待时收到警告:仅等待期货
所以我拿出等待。但如果包含 await 则结果相同。
我尝试在您的代码中使用 fileName 而不是“my file.txt”,但结果相同。