Проблемы с получением длины в будущем с использованием таблицы данных с разбивкой на страницы
Я пытаюсь решить проблему, но я новичок в этом мире программирования ... У меня проблема с 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;
// }
}