Performance 如何提高颤振数据表小部件的性能?
我尝试了所有可能的解决方案,比如在datatable中添加一些小部件。 但DataTable的性能并没有提高 所以,谁知道如何提高DataTable的性能呢Performance 如何提高颤振数据表小部件的性能?,performance,flutter,datatable,Performance,Flutter,Datatable,我尝试了所有可能的解决方案,比如在datatable中添加一些小部件。 但DataTable的性能并没有提高 所以,谁知道如何提高DataTable的性能呢 参考数据表视频链接:使用分页数据表()而不是数据表()小部件 分页数据表显示每页的数据行,并提供用于显示其他页面的控件 DataTable( columnSpacing: 1, headingRowHeight: 35, dataRowHeight: 36,
参考数据表视频链接:使用
分页数据表()
而不是数据表()
小部件
分页数据表显示每页的数据行,并提供用于显示其他页面的控件
DataTable(
columnSpacing: 1,
headingRowHeight: 35,
dataRowHeight: 36,
columns: [
DataColumn(
label: Expanded(
child: Container(
color: Color(int.parse(widget.classObj.color)),
padding: Utils.tableHeaderPadding(),
child: Utils.tableHeaderText('No')),
),
),
DataColumn(
label: Expanded(
child: Container(
color: Color(int.parse(widget.classObj.color)),
padding: EdgeInsets.symmetric(horizontal: 50, vertical: 5),
child: Utils.tableHeaderText('Name'),
)),
),
if (studentAttendance.isNotEmpty)
for (var item in studentAttendance)
DataColumn(
label: InkWell(
onTap: () => _createDateDeleteDialogue(
context, _user.emailUid, widget.classObj.classId, item),
child: Container(
color: Color(int.parse(widget.classObj.color)),
padding: Utils.tableHeaderPadding(),
child: Utils.tableHeaderText(item)),
),
),
if (studentAttendance.isNotEmpty) ...[
DataColumn(
label: Container(
color: Color(int.parse(widget.classObj.color)),
padding: Utils.tableHeaderPadding(),
child: Utils.tableHeaderText('Total Present')),
),
DataColumn(
label: Container(
color: Color(int.parse(widget.classObj.color)),
padding: Utils.tableHeaderPadding(),
child: Utils.tableHeaderText('Total Absent')),
),
DataColumn(
label: Container(
color: Color(int.parse(widget.classObj.color)),
padding: Utils.tableHeaderPadding(),
child: Utils.tableHeaderText('Total Attendance(%)')),
),
]
],
rows: students.map((student) {
int presence = student.attendanceList != null
? student.attendanceList.length
: 0;
int absent = studentAttendance.length - presence;
double percent = (presence * 100) / studentAttendance.length;
final attendanceWidget = AttendanceWidgetList(
student: student,
attendance: studentAttendance,
isPresence: presence == 0 ? false : true,
context: context,
classId: widget.classObj.classId,
email: _user.emailUid,
);
return DataRow(
cells: [
DataCell(
Center(
child: Text(
student.id.toString(),
style: Utils.tableSimpleText(),
),
),
),
DataCell(
Container(
margin: const EdgeInsets.only(right: 5),
child: Text(
student.name,
style: const TextStyle(fontSize: 17, color: Colors.black),
),
),
),
if (student.attendanceList != null &&
studentAttendance.isNotEmpty)
if (presence == 0)
...attendanceWidget.attendanceListWidget().map((e) => e)
else if (absent == 0)
...attendanceWidget.attendanceListWidget().map((e) => e)
else
...studentAttendance.map((e) {
if (student.attendanceList.contains(e)) {
return AttendanceWidgetList(
student: student,
attendance: studentAttendance,
isPresence: true,
date: e,
context: context,
classId: widget.classObj.classId,
email: _user.emailUid,
).attendanceSetter();
} else {
return AttendanceWidgetList(
student: student,
attendance: studentAttendance,
isPresence: false,
date: e,
context: context,
classId: widget.classObj.classId,
email: _user.emailUid,
).attendanceSetter();
}
})
else
...attendanceWidget.attendanceListWidget().map((e) => e),
if (studentAttendance.isNotEmpty) ...[
DataCell(
Center(
child: Text(
presence.toString(),
style: Utils.tableSimpleText(),
),
),
),
DataCell(
Center(
child: Text(absent.toString(),
style: Utils.tableSimpleText()),
),
),
DataCell(
Center(
child: Text("${percent.toStringAsFixed(2)} %",
style: Utils.tableSimpleText()),
),
),
],
],
);
}).toList(),
),