我的Flutter应用程序有一个列表,可以从Firebase Firestore数据库加载数据。它可以在所有模拟器设备(以及一些真正的iOS设备)上正常加载,但仅在实际的iPhone 7设备上中断。以下错误是我在iPhone7上得到的:
RangeError (index): Invalid value: Valid value range is empty: 0
我不确定从哪里开始调试此错误。任何指导将不胜感激!
这是我的列表生成器代码:
return new ListView(
physics: const AlwaysScrollableScrollPhysics(),
children: snapshot.data.documents.map((DocumentSnapshot document) {
return _buildActivityItem(context,
new Activity(
activity: document['activity'],
dateCreated: document['dateCreated'],
food: document['food'],
id: document.documentID,
sentiment: document['sentiment'],
text: document['text'],
)
);
}).toList(),
);
Widget _buildActivityItem(BuildContext context, Activity activity) {
// Format Date
var formatter = new DateFormat('E., MMMM d').add_j();
var today = new DateFormat('E').format(new DateTime.now()) == new DateFormat('E').format(activity.dateCreated);
String formattedDateCreated = today ? new DateFormat().add_j().format(activity.dateCreated) : formatter.format(activity.dateCreated);
// Format Activity
String emoji = activity.activity == 'Exercise' ? ''
: activity.food.length > 0 ? ''
: '';
// List Foods
String getFoodList = activity.food.join(', ');
return Container(
decoration: new BoxDecoration(
border: new Border(
bottom: new BorderSide(width: 1.0, color: Theme.of(context).dividerColor)
)
),
child: ListTile(
leading: new Text(
emoji,
style: new TextStyle(
fontSize: 34.0
)
),
title: new Text(activity.text),
subtitle: activity.activity.length > 0 ?
new Text(activity.activity )
: activity.food.length > 0 ? new Text(getFoodList)
: null,
trailing: new Text(formattedDateCreated),
),
);
}