Как добавить список в повторно используемый DataRow из API во Flutter | Getx

Я добавил список в DataRow из API с помощью List.generate, но когда я пытаюсь создать общий DataTable для его повторного использования, как я могу добавить list.generate при вызове этого виджета. есть ли способ сделать это? или есть другой способ, кроме list.generate?

Многоразовый или общий виджет.

      class MyPurchaseDataTable extends StatelessWidget {
  final String column1;
  final String column2;
  final String column3;
  final String row1;
  final String row2;
  final String row3;

  const MyPurchaseDataTable({
    Key? key,
    required this.row1,
    required this.row2,
    required this.row3,
    required this.column1,
    required this.column2,
    required this.column3,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return FittedBox(
      child: DataTable(
        columns: [
          const DataColumn(
            label: CustomUnderlineText(text: ""),
          ),
          DataColumn(
            label: CustomUnderlineText(text: column1),
          ),
          DataColumn(
            label: CustomUnderlineText(text: column2),
          ),
          DataColumn(
            label: CustomUnderlineText(text: column3),
          )
        ],
        
        rows: [
          DataRow(
            cells: <DataCell>[
              DataCell(Icon(
                Icons.square,
                size: 12.0.sp,
                color: colorPrimary,
              )),
              DataCell(CustomTextDataCell(text: row1)),
              DataCell(CustomTextDataCell(text: row2)),
              DataCell(CustomTextDataCell(text: row3))
            ],
          ),
        ],
      ),
    );
  }
}

Обычно я так звоню

       rows: List.generate(
              controller.myPackageList.length,
              (index) {
                var myAttenList = controller.myPackageList[index];
                return DataRow(cells: [
                  DataCell(
                    Text(myAttenList.xattendancedate.toString()),
                  ),
                  DataCell(
                    Text(myAttenList.xattendancetime.toString()),
                  ),
                  DataCell(
                    Text(myAttenList.xreaderName.toString()),
                  ),
                ]);
              },
            ).toList(), 

Контроллер

      class MyPackagesController extends GetxController {
  SecureStorage secureStorage = SecureStorage();
  final myPackageList = <MyPackageModel>[].obs;
  

  @override
  void onInit() async {
    super.onInit();
    await fetchMyAttendance();
  }


  Future fetchMyAttendance() async {
    var response = await MyPackageRepo().myPackage();
    if (response.status == ApiResponseStatus.completed) {
      if (response.data != null) {
        myPackageList.value = response.data!;
      }
    } else {
      Get.defaultDialog(title: response.message.toString());
    }
  }
}

Часть представления

      Column(
          children: [
            PurchasePackageHeading(
              heading: "My Membership Package",
              color: colorPrimary,
              height: 46.0.h,
              style: TextStyle(fontSize: 18.0.sp, color: Colors.white),
            ),
            CustomSizedBox(height: 4.0.h),
            MyPurchaseDataTable(
              length: controller.myPackageList.length,
              myList: controller.myPackageList,
              row1: 'Package Name', // i want to assign the list here
              row2: '01-11-2021',  // i want to assign the list here
              row3: '01-11-2021',  // i want to assign the list here
              column1: 'Package Name',
              column2: 'Start Date',
              column3: 'Expire Date',
            ),
            PurchasePackageHeading(
              heading: "My Personal Training",
              color: colorPrimary,
              height: 46.0.h,
              style: TextStyle(fontSize: 18.0.sp, color: Colors.white),
            ),
            CustomSizedBox(height: 4.0.h),
            const MyPurchaseDataTable(
              row1: 'Package Name', // i want to assign the list here
              row2: '01-11-2021', // i want to assign the list here
              row3: '01-11-2021', // i want to assign the list here
              column1: 'Package Name',
              column2: 'Start Date',
              column3: 'Expire Date',
            ),
            
          ],
        ),

0 ответов

Другие вопросы по тегам