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,我这么做了,但它是一样的,我现在发现了我的错误,并会回答它