flutter - Flutter 分页数据表填充高度
问题描述
我正在尝试创建Paginated Data Table
以填充高度。但是,无论我尝试什么似乎都不起作用。我怎样才能让桌子填满高度?另外,如何更改分页背景颜色?
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(state.department.name),
),
body: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
TextButton(onPressed: () {}, child: Text('TEst 1')),
TextButton(onPressed: () {}, child: Text('TEst 1'))
],
),
Container(
child: PaginatedDataTable(
showCheckboxColumn: false,
headingRowHeight: 35,
columns: const <DataColumn>[
DataColumn(
label: Text(
'First Name',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
DataColumn(
label: Text(
'Last Name',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
DataColumn(
label: Text(
'Id',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
DataColumn(
label: Text(
'Time',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
DataColumn(
label: Text(
'Operator',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
],
source: tableSource
),
)
],
),
);
}
随着Container
容器本身的高度被填满,但分页数据表没有。
解决方案
解决方案
static const double topViewHeight = 50.0;
static const double paginateDataTableHeaderRowHeight = 35.0;
static const double pagerWidgetHeight = 56;
static const double paginateDataTableRowHeight = kMinInteractiveDimension;
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Hello'),
),
body: LayoutBuilder(
builder: (context, constraint) {
return Column(
children: <Widget>[
Container(
width: constraint.maxWidth,
height: topViewHeight,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
TextButton(onPressed: () {}, child: Text('TEst 1')),
TextButton(onPressed: () {}, child: Text('TEst 1'))
],
),
),
Container(
color: Colors.greenAccent,
height: constraint.maxHeight - topViewHeight,
child: Center(
child: PaginatedDataTable(
showCheckboxColumn: false,
headingRowHeight: paginateDataTableHeaderRowHeight,
rowsPerPage: ((constraint.maxHeight -
topViewHeight -
paginateDataTableHeaderRowHeight -
pagerWidgetHeight) ~/
paginateDataTableRowHeight)
.toInt(),
columns: const <DataColumn>[
DataColumn(
label: Text(
'First Name',
style: TextStyle(fontStyle: FontStyle.italic),
),
),
],
source: TableSource()),
))
],
);
},
),
);
}
需要知道
笔记:
列是一个无限的高度约束,因此它不适合适合高度。
如果,您扭曲 SingleChildScrollViewWidget 内的列以避免约束错误和警告
推荐阅读
- laravel - 不要在 Vue、TailwindUI 和 Headless UI 中使用内置或保留的 HTML 元素
- android - Cordova-android如何编辑添加平台时生成的project.properties文件
- android - ArrayList 正在抛出 IndexOutOfBoundsException,尽管它已在函数中初始化并使用 add 函数填充
- react-native - Android Studio 无法在项目/模块设置中找到 adb
- java - 如何从 WebServiceTemplateBuilder 获取故障响应
- c++ - 重载前缀运算符+
- akka - ClusterSharding:如何停止集群分片中的所有参与者?
- r - 是否有基于列返回行值的 R 函数?
- python - cartopy 模块不会更新到版本 0.20.0
- amazon-web-services - 创建指标警报失败:ValidationError:MetricName 不得包含非 ASCII 字符