首页 > 解决方案 > Flutter/Dart:在 null 上调用了 getter 'length'

问题描述

I/flutter ( 9255): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 9255): The following NoSuchMethodError was thrown building FutureBuilder<List<Asset>>(dirty, state:
I/flutter ( 9255): _FutureBuilderState<List<Asset>>#734fc):
I/flutter ( 9255): The getter 'length' was called on null.
I/flutter ( 9255): Receiver: null
I/flutter ( 9255): Tried calling: length

--------代码片段 ----------

Future<List<Asset>> getAssets() async {
  var dbClient = await db;
  List<Map> list = await dbClient.rawQuery('SELECT * FROM Assets');
  print("created List Map from DB table Assets");
  //List<Asset> assets = List();
  List assets = [];
  for (int i = 0; i < list.length; i++) {
    assets.add(Asset());
  }
  print(assets.length);
  return assets;
}

标签: flutterdart

解决方案


rawQuery正在返回 null。

你应该像这样的更新代码

List<Map> list = (await dbClient.rawQuery('SELECT * FROM Assets'))??[];

推荐阅读