Flutter 数据表不显示颤振中的所有行
我有来自数据库的数据的类:Flutter 数据表不显示颤振中的所有行,flutter,dart,Flutter,Dart,我有来自数据库的数据的类: class Months { final int index; final String activity_k; final String activity_a; final String udigree; Months(this.index, this.activity_k, this.activity_a, this.udigree); } 我有一个页面可以请求数据并在数据表中查看它们: import 'package:flutter/mat
class Months {
final int index;
final String activity_k;
final String activity_a;
final String udigree;
Months(this.index, this.activity_k, this.activity_a, this.udigree);
}
我有一个页面可以请求数据并在数据表中查看它们:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:jiyanUquraan/classes/monthly.dart';
class MonthlyReport extends StatefulWidget {
@override
_MonthlyReportState createState() => _MonthlyReportState();
}
class _MonthlyReportState extends State<MonthlyReport> {
var selectedCourse = '1';
@override
Widget build(BuildContext context) {
var widthView = MediaQuery.of(context).size.width;
List monthly = [];
Future<List> fetchReport() async {
Map rdata = ModalRoute.of(context).settings.arguments;
var u_id = rdata['u_id'];
var lang = rdata['lang'];
print('lang=$lang');
print('uid=$u_id');
print('course=$selectedCourse');
var url =
'http://10.0.2.2/jiyan/test/api/digrees/monthly_report.php?u_id=$u_id&m_id=$selectedCourse';
var response = await http.get(url);
var data = jsonDecode(response.body);
print(data);
for (var x in data) {
Months _monthlyreport =
Months(x['index'], x['activity_k'], x['activity_a'], x['udigree']);
monthly.add(_monthlyreport);
return monthly;
}
}
return FutureBuilder(
future: fetchReport(),
builder: (context, snapshot) {
List monthly = snapshot.data;
if (snapshot.data == null) {
return Column(
children: <Widget>[
Container(
padding: EdgeInsets.fromLTRB(15, 20, 15, 20),
child: Row(
children: <Widget>[
Text('ژمارا کورسی ژێ بگرە',
style: TextStyle(fontSize: 22, color: Colors.red)),
Container(
width: 30,
),
Container(
width: 60,
height: 40,
padding: EdgeInsets.all(2),
decoration: BoxDecoration(
color: Color.fromRGBO(230, 200, 200, 0.2),
borderRadius: BorderRadius.circular(10)),
child: buildDropDownFieldList()),
],
),
),
Text(
"ڤی کورسی هێشتا راپورت نینە",
style: TextStyle(fontSize: 32, color: Colors.white),
),
],
);
} else {
return Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: ListView(
padding: EdgeInsets.fromLTRB(15, 20, 15, 20),
shrinkWrap: true,
children: <Widget>[
Row(
children: <Widget>[
Text('ژمارا کورسی ژێ بگرە',
style: TextStyle(fontSize: 22, color: Colors.red)),
Container(
width: 50,
),
Container(
width: 60,
height: 40,
padding: EdgeInsets.all(2),
decoration: BoxDecoration(
color: Color.fromRGBO(230, 200, 200, 0.2),
borderRadius: BorderRadius.circular(10)),
child: buildDropDownFieldList()),
],
),
SizedBox(
height: 15,
),
Directionality(
textDirection: TextDirection.rtl,
child: DataTable(
columns: [
DataColumn(
label: Center(
child: Text('ئەرک',
style: TextStyle(
fontSize: 26,
color: Colors.white)))),
DataColumn(
label: Center(
child: Text('نمۆە',
style: TextStyle(
fontSize: 26,
color: Colors.white)))),
],
rows: monthly
.map((items) => DataRow(cells: [
DataCell(Text(items.activity_k)),
DataCell(Text(items.udigree)),
]))
.toList()
//End of List
)),
]),
);
}
});
}
DropdownButton buildDropDownFieldList() {
return DropdownButton<String>(
value: selectedCourse,
elevation: 16,
style: TextStyle(
color: Colors.red, fontWeight: FontWeight.bold, fontSize: 22),
underline: SizedBox(),
onChanged: (String newValue) {
setState(() {
selectedCourse = newValue;
});
},
items: <String>['1','2','3','4','5','6','7','8','9','10','11','12','13'
].map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Center(child: Text(value)),
);
}).toList(),
);
}
}
String selectedCourse = '1';
当我更改下拉列表时,数据已正确更改,并且我尝试从URL打印数据响应,这是成功获取数据,但表数据仅查看一行,我知道它们不止一行。
使用snapshot.data.mapitems更改monthly.mapitems时,出现以下错误:
type 'List<dynamic>' is not a subtype of type 'List<DataRow>'
将DataRow类型的类型参数添加到映射函数:
rows: monthly
.map<DataRow>((items) => DataRow(cells: [
DataCell(Text(items)),
DataCell(Text(items)),
])).toList()
谢谢大家
我发现了我问的错误,
我把月报放错地方了:
for (var x in data) {
Months _monthlyreport =
Months(x['index'], x['activity_k'], x['activity_a'], x['udigree']);
monthly.add(_monthlyreport);
return monthly;
}
它必须在循环之外,因此:
for (var x in data) {
Months _monthlyreport =
Months(x['index'], x['activity_k'], x['activity_a'], x['udigree']);
monthly.add(_monthlyreport);
}
return monthly;
你能分享一下《月刊》的内容吗?我现在会在文章中添加更多细节question@Mobina我用更多的话改变了问题details@Mobina你明白了吗?我刚刚发布了答案。如果有帮助,请告诉我。谢谢Mobina,我这么做了,但它是一样的,我现在发现了我的错误,并会回答它