Я хочу DataTable (), который показывает не прокручиваемый столбец, заблокированный слева. (столбец «Times»), в то время как даты справа могут прокручиваться так же, как при использовании «стоп-столбца» в Excel.
Мой метод состоял в том, чтобы начать с рабочего виджета SingleChildScrollView с датами и добавить это в строку с не прокручиваемым виджетом. Однако, когда я добавляю виджет строки с виджетами, которые нельзя прокручивать и прокручивать, SingleChildScrollView «блокируется» и переполняется вправо.
Я создал дартпад, чтобы показать мой код здесь: https://dartpad.dev/c7c35fcd605837159f91e12a25a2b4d7
Дартпад начинается с моей закомментированной попытки показать работающий SingleChildScrollView. Вы можете увидеть, как я пытался заставить его работать, раскомментировав четыре строки в верхней части корпуса скаффолда и три строки рядом с концом.
На случай, если дартпад недоступен, вот код: включая комментированные попытки заставить его работать:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatelessWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
),
body:
// SafeArea( child: // <--- uncomment out
// Row( // <--- uncomment out
// children: [ // <--- uncomment out
// TestTimeData(label: "Times"), // <--- uncomment out
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [ // <--- comment this out
TestDayData(label: " Monday\n 03-09-2020"),
TestDayData(label: " Tuesday\n 03-10-2020"),
TestDayData(label: " Wednesday\n 03-11-2020"),
TestDayData(label: " Thursday\n 03-12-2020"),
TestDayData(label: " Friday\n 03-13-2020"),
TestDayData(label: " Saturday\n 03-14-2020"),
TestDayData(label: " Sunday\n 03-15-2020"),
],
),
),
// ], // <--- uncomment out
// ), // <--- uncomment out
// ), // <--- uncomment out
);
}
}
class TestDayData extends StatelessWidget {
final List<String> timesList = [
"This is",
"a bunch",
"of strings",
];
final String label;
TestDayData({Key key, this.label}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: DataTable(
showCheckboxColumn: false,
columns: [
DataColumn(
label: Center(child: Text(label)),
numeric: false,
),
],
rows: timesList
.map(
(times) => DataRow(cells: [
DataCell(
Text(times.toString()),
),
]),
)
.toList(),
),
);
}
}
class TestTimeData extends StatelessWidget {
final List<String> timesList = [
"08:00",
"09:00",
"10:00",
];
final String label;
TestTimeData({Key key, this.label}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: DataTable(
showCheckboxColumn: false,
columns: [
DataColumn(
label: Center(child: Text(label)),
numeric: false,
),
],
rows: timesList
.map(
(times) => DataRow(cells: [
DataCell(
Text(times.toString()),
),
]),
)
.toList(),
),
);
}
}