【发布时间】:2019-12-12 01:00:53
【问题描述】:
我有一个带有 ListView 的 FutureBuilder 来显示具有从 .txt 文件中读取的值的自定义项(小部件)。
问题是这些项目只有在我以调试模式或运行模式启动应用程序时才会显示。当我尝试使用 AppLauncher 打开应用程序时(就像“普通”用户那样),listView 是空的。我在 AVD 和“真实”设备上进行了尝试。
Future "listFuture" 用于从文件中读取值并返回一个 Widget 列表
class Home extends StatefulWidget {
final Future listFuture = setupList();
@protected
@mustCallSuper
void initState() {
print("init complete");
}
@override
State<StatefulWidget> createState() {
return HomeState();
}
}
如果 FutureBuilder 正确获取数据,则应显示带有我的小部件列表的 listView
child: FutureBuilder<List<SubListItem>>(
future: widget.listFuture,
// ignore: missing_return
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return new Text("None");
case ConnectionState.waiting:
return new Text("loading");
default:
if (snapshot.hasError) {
print("Error");
return Center(child: (Text("No data")));
} else {
return subListView(context, snapshot);
}
}
},
),
Widget subListView(BuildContext context, AsyncSnapshot snapshot) {
List<Widget> items = snapshot.data;
//This ScrollConfiguration is used to remove any animations while scrolling
return ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 4),
child: new ListView.builder(
itemCount: items.length,
itemBuilder: (BuildContext context, int index) {
return Column(
children: <Widget>[items[index]],
);
},
),
),
);
}
感谢您的帮助!
【问题讨论】: