Flutter Dart App RangeError仅适用于特定设备(非模拟器)

时间:2018-06-07 04:25:55

标签: ios firebase dart flutter

我的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),
    ),
  );
}

0 个答案:

没有答案