【发布时间】:2021-08-06 13:20:48
【问题描述】:
我从事颤振项目。我尝试使用 pagination 从服务器获取数据。我这里有问题:
myList = List.generate(10, (index) => DataObd.fromJson(json[index]));
错误:没有为类型“JsonCodec”定义运算符“[]”。
我的代码:
class _StatusState extends State<Status> {
List<DataObd> myList;
ScrollController _scrollController = ScrollController();
int _currentMax = 10;
ObdApi obdApi = ObdApi();
@override
void initState() {
super.initState();
myList = List.generate(10, (index) => DataObd.fromJson(json[index]));
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
_getMoreData();
}
});
}
_getMoreData() {
print('hello');
/* for (int i = _currentMax; i < _currentMax + 10; i++) {
myList.add("Item : ${i + 1}");
}
_currentMax = _currentMax + 10;
setState(() {});*/
}
@override
Widget build(BuildContext context) {
return SafeArea(
minimum: const EdgeInsets.all(10.0),
child: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Color(0xFF010611),
iconTheme: IconThemeData(color: Colors.white),
automaticallyImplyLeading: true,
centerTitle: true,
title: Text(
'Status',
style: TextStyle(
color: Colors.white,
),
),
elevation: 0.0,
leading: Row(
children: [
IconButton(
icon: Icon(
CommunityMaterialIcons.arrow_left_circle_outline,
color: Colors.yellow[600],
),
onPressed: () {
Navigator.pop(context);
},
)
],
)),
body: Container(
child: FutureBuilder<ActiveObd>(
future: obdApi.getActiveObd(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('no connection');
case ConnectionState.active:
case ConnectionState.waiting:
return Center(
child: CircularProgressIndicator(),
);
break;
case ConnectionState.done:
if (snapshot.hasError) {
return Center(
child:
new CircularProgressIndicator(),
);
} else {
if (snapshot.hasData) {
var activeobd = snapshot.data;
return ListView.builder(
controller: _scrollController,
itemExtent: 80,
itemBuilder: (context , index){
if (index == myList.length) {
return CupertinoActivityIndicator();
}
final obd = activeobd.obds[index];
DateTime date = DateTime.parse(obd.dateOBDCommand);
String result = DateFormat('yyyy-MM-dd H:m:s').format(date);
return Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
title: Container(
height: 30,
child: Text("${obd.description}")),
subtitle: Text(result.toString()),
trailing: Text("${obd.value}"),
)
itemCount:myList.length +1,
);
} else {
return Text('No Data');
}
}
break;
default:
return Container();
break;
}
我该如何解决?
提前致谢
【问题讨论】: