Проблемы с получением длины в будущем с использованием таблицы данных с разбивкой на страницы

Я пытаюсь решить проблему, но я новичок в этом мире программирования ... У меня проблема с rowCount, я не могу получить длину из Future, я выполнил некоторые объяснения здесь, но не получил счастливый.

Когда я пытаюсь получить длину с помощью rowCount, я получил сообщение об ошибке, в котором говорилось, что я не могу получить из Future, но если я помещаю rowCount вручную, я получил сообщение, что не могу использовать длину с фьючерсами

Код такой:

      import 'package:bit_mobile/app/pages/curriculum/curriculum_controller.dart';
import 'package:bit_mobile/app/pages/curriculum/curriculum_schooling_controller.dart';

import 'package:bit_mobile/app/shared/model/curriculum_item.dart';
import 'package:flutter/material.dart';

class CurriculumSchoolingItemPage extends StatefulWidget {
  const CurriculumSchoolingItemPage({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _CurriculumSchoolingItemPageState();
}

class _CurriculumSchoolingItemPageState
    extends State<CurriculumSchoolingItemPage> {
  _CurriculumSchoolingItemPageState();

  @override
  Widget build(BuildContext context) {
    var datasource = CurriculumSchoolingDataSource();
    int _rowPerPage = PaginatedDataTable.defaultRowsPerPage;
    return SingleChildScrollView(
      child: PaginatedDataTable(
        columnSpacing: 30,
        horizontalMargin: 10,
        rowsPerPage: 10,
        showCheckboxColumn: false,
        columns: [
          DataColumn(label: Text("Descrição")),
          DataColumn(label: Text("Escolaridade")),
          DataColumn(label: Text("Fundação")),
          DataColumn(label: Text("Inidiado em:")),
          DataColumn(label: Text("Finalizado em:")),
        ],
        source: datasource,
        onRowsPerPageChanged: (rowsPerPage) {
          setState(() {
            _rowPerPage = (rowsPerPage!);
          });
        },
        // rowsPerPage: _rowPerPage,
      ),
    );
  }
}

class CurriculumSchoolingDataSource extends DataTableSource {
  Future<List<SchoolingCurriculumItem>> curriculumSchooling =
      CurriculumSchoolingController().findCurriculumSchooling();


  @override
  DataRow getRow(int index) {
    return DataRow.byIndex(
      index: index,
      cells: [
        DataCell(
          FutureBuilder(
            future: this.curriculumSchooling,
            builder: (context,
                AsyncSnapshot<List<SchoolingCurriculumItem>> snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data![index].description!);
              } else if (snapshot.hasError) {
                return Text('');
              }
              return CircularProgressIndicator();
            },
          ),
        ),
        DataCell(
          FutureBuilder(
            future: this.curriculumSchooling,
            builder: (context,
                AsyncSnapshot<List<SchoolingCurriculumItem>> snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data![index].schooling!);
              } else if (snapshot.hasError) {
                return Text('');
              }
              return CircularProgressIndicator();
            },
          ),
        ),
        DataCell(
          FutureBuilder(
            future: this.curriculumSchooling,
            builder: (context,
                AsyncSnapshot<List<SchoolingCurriculumItem>> snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data![index].foundation!);
              } else if (snapshot.hasError) {
                return Text('');
              }
              return CircularProgressIndicator();
            },
          ),
        ),
        DataCell(
          FutureBuilder(
            future: this.curriculumSchooling,
            builder: (context,
                AsyncSnapshot<List<SchoolingCurriculumItem>> snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data![index].startedAt!);
              } else if (snapshot.hasError) {
                return Text('');
              }
              return CircularProgressIndicator();
            },
          ),
        ),
        DataCell(
          FutureBuilder(
            future: this.curriculumSchooling,
            builder: (context,
                AsyncSnapshot<List<SchoolingCurriculumItem>> snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data![index].finishedAt!);
              } else if (snapshot.hasError) {
                return Text('');
              }
              return CircularProgressIndicator();
            },
          ),
        ),
      ],
    );
  }

  @override
  int get selectedRowCount => 100;
  bool get isRowCountApproximate => false;
  int get rowCount => 10;


//
// @override
// int get rowCount {
//   int rows = 0;
//   Widget widget = FutureBuilder(
//     future: this.curriculumSchooling,
//     builder: (context, AsyncSnapshot<List<SchoolingCurriculumItem>> snapshot) {
//       rows = Future.;
//       print('Aqui está o número dos items : $rows');
//       return Container();
//     },
//   );
//
//   return rows;
// }

}

0 ответов

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