[很抱歉,我这个愚蠢的问题,我是flutter
的新手,作为我的以下代码,当我将listview
目录中的所有文件加载时,我想更新mandarin
。我确定我已经将所有文件添加到tests
中,但是我不知道我的代码有什么问题,为什么listview
不显示任何内容。有任何想法吗?谢谢你先
class _TeachersState extends State<TeachersList> {
final _biggerFont = const TextStyle(fontSize: 18.0);
List tests = List();
Widget _buildSuggestions(BuildContext context) {
initTests();
return ListView.builder(
itemCount: tests.length,
padding: const EdgeInsets.all(16.0),
itemBuilder: (context, i) {
if (i.isOdd) return Divider();
return _buildRow(tests[i]);
});
}
void gotoTest(String title) {
Navigator.push(
context, MaterialPageRoute(builder: (context) => TestList(title)));
}
Widget _buildRow(String pair) {
return ListTile(
onTap: () => gotoTest(pair),
title: Text(
pair,
style: _biggerFont,
),
);
}
void initTests() async {
List t = List();
String baseDir = await ExtStorage.getExternalStorageDirectory();
String waDir = "$baseDir/mandarin";
Directory dir = new Directory(waDir);
dir.list().forEach((element) {
t.add(element.path);
});
setState(() {
tests.addAll(t);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("请选择老师")),
body: _buildSuggestions(context),
);
}
}
您不等待_buildSuggestions中的initTests,而且我也将此函数调用放在initState重写中。
@override
void initState() async {
await initTests();
}
尝试以完整状态调用它:
@override
void initState(){
super.init();
initTests();
}
&尝试打印列表tests
的值