【发布时间】:2021-08-11 09:31:17
【问题描述】:
我正在尝试获取 driverfleet 数据以进行审查,但我收到以下错误
E/flutter (21563): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: Bad state: No element
E/flutter (21563): #0 Iterable.first (dart:core/iterable.dart:524:7)
E/flutter (21563): #1 _ReviewTransportsalesState.driverFleet (package:project_inovation/ui/screen/ReviewTransportsales.dart:504:10)
E/flutter (21563): <asynchronous suspension>
E/flutter (21563): #2 _ReviewTransportsalesState.initState (package:project_inovation/ui/screen/ReviewTransportsales.dart:171:5)
E/flutter (21563): #3 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4684:58)
E/flutter (21563): #4 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
E/flutter (21563): #5 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
E/flutter (21563): #6 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
这是flutter显示的错误码
driverFleet(String value) async {
FleetModel fleetModel = FleetModel(value);
API _api = API();
Response response = await _api.fleetAPI(fleetModel);
xml.XmlDocument parsedFleet = xml.parse(response.data);
String fleetName = parsedFleet
.findAllElements('DataRow')
.first
.findAllElements('field')
.elementAt(0)
.getAttribute('lval');
String fleetID = parsedFleet
.findAllElements('DataRow')
.first
.findAllElements('field')
.elementAt(1)
.getAttribute('lval');
String productID = parsedFleet
.findAllElements('DataRow')
.first
.findAllElements('field')
.elementAt(3)
.getAttribute('lval');
DriverModel driverModel = DriverModel(fleetID);
try {
var driverResponse = await _api.driverAPI(driverModel);
xml.XmlDocument parsedDriver = xml.parse(driverResponse.data);
String driverID = parsedDriver
.findAllElements('DataRow')
.first
.findAllElements('field')
.elementAt(0)
.getAttribute('lval');
String driverName = parsedDriver
.findAllElements('DataRow')
.first
.findAllElements('field')
.elementAt(1)
.getAttribute('lval');
_fleetController.text = fleetName ?? 'B 9778 PYU';
_driverController.text = driverName;
_mySelectionDriver = driverID + driverName;
_mySelectionProduct = productID;
_fleetID = fleetID ?? '1000773';
_driverID = driverID;
} catch (_) {
_fleetController.text = fleetName ?? 'B 9778 PYU';
_driverController.text = 'Aang T6';
_mySelectionDriver = '1001465Aang T6';
_mySelectionProduct = productID;
_fleetID = fleetID ?? '1000773';
_driverID = '1001427';
}
await readTransportSales(widget.recordID);
await readTransRoute(widget.recordID);
setState(() {});
}
我假设这会读取一个空列表,基于我在这里阅读的类似问题,我尝试使用他们的解决方案但仍然没有好处。
【问题讨论】:
-
您的假设是正确的...但是您的代码有点难以理解。我认为您应该检查该页面上的任何数据是否为空
-
每当我运行应用程序时,即使我的数据库中有数据,它也会读取 0 行