diff --git a/CHANGELOG.md b/CHANGELOG.md index dbdbcca..3d9570f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ ## [0.0.1] - 25 August 2022 * Initial Release + +## [0.0.2] - 1 September 2022 + +* Updated TableTheme \ No newline at end of file diff --git a/example/lib/main.dart b/example/lib/main.dart index 0e81089..a10717d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -105,9 +105,9 @@ class _TimetableDemoState extends State { endHour: 22, timeBlocks: blocks, scrollController: _scrollController, - tablePaddingStart: 0, combineBlocks: true, mergeBlocks: false, + theme: const TableTheme(tablePaddingStart: 0), ) ] else ...[ Timetable( @@ -115,9 +115,9 @@ class _TimetableDemoState extends State { endHour: 22, timeBlocks: blocks, scrollController: _scrollController, - tablePaddingStart: 0, combineBlocks: true, mergeBlocks: true, + theme: const TableTheme(tablePaddingStart: 0), ), ], ], diff --git a/lib/src/models/table_theme.dart b/lib/src/models/table_theme.dart index 0fbcb72..18d44cd 100644 --- a/lib/src/models/table_theme.dart +++ b/lib/src/models/table_theme.dart @@ -8,7 +8,10 @@ class TableTheme { this.lineHeight = 2, this.tableTextOffset = 5, this.lineDashFrequency = 25, - this.timeStyle = const TextStyle(), + this.timeStyle, + this.tablePaddingStart = 10, + this.tablePaddingEnd = 15, + this.blockPaddingBetween = 0, }); /// The color of the lines. @@ -24,5 +27,14 @@ class TableTheme { final double tableTextOffset; /// The style of the time text. - final TextStyle timeStyle; + final TextStyle? timeStyle; + + /// The padding between the table markings and the first block. + final double tablePaddingStart; + + /// The padding between the last block and the end of the table. + final double tablePaddingEnd; + + /// The padding between two blocks. + final double blockPaddingBetween; } diff --git a/lib/src/timetable.dart b/lib/src/timetable.dart index cf5f170..edcefce 100644 --- a/lib/src/timetable.dart +++ b/lib/src/timetable.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:timetable/src/block_service.dart'; @@ -21,8 +23,6 @@ class Timetable extends StatefulWidget { this.blockWidth = 50, this.blockColor = const Color(0x80FF0000), this.hourHeight = 80, - this.tablePaddingStart = 10, - this.tablePaddingEnd = 15, this.theme = const TableTheme(), this.mergeBlocks = false, this.combineBlocks = true, @@ -47,12 +47,6 @@ class Timetable extends StatefulWidget { /// The heigh of one hour in the timetable. final double hourHeight; - /// The padding between the table markings and the first block. - final double tablePaddingStart; - - /// The padding between the last block and the end of the table. - final double tablePaddingEnd; - /// The theme of the timetable. final TableTheme theme; @@ -80,7 +74,9 @@ class _TimetableState extends State { void initState() { super.initState(); _scrollController = widget.scrollController ?? ScrollController(); - _scrollToFirstBlock(); + if (widget.timeBlocks.isNotEmpty) { + _scrollToFirstBlock(); + } } @override @@ -133,6 +129,9 @@ class _TimetableState extends State { ], ], ), + SizedBox( + width: widget.theme.blockPaddingBetween, + ), ], ] else ...[ for (var block in blocks) ...[ @@ -140,7 +139,11 @@ class _TimetableState extends State { ], ], SizedBox( - width: widget.tablePaddingEnd, + width: max( + widget.theme.tablePaddingEnd - + widget.theme.blockPaddingBetween, + 0, + ), height: widget.hourHeight * (widget.endHour - widget.startHour + @@ -158,7 +161,7 @@ class _TimetableState extends State { double _calculateTableStart() { return _calculateTableTextSize().width + - widget.tablePaddingStart + + widget.theme.tablePaddingStart + widget.theme.tableTextOffset; } @@ -194,7 +197,10 @@ class _TimetableState extends State { Size _calculateTableTextSize() { return (TextPainter( - text: TextSpan(text: '22:22', style: widget.theme.timeStyle), + text: TextSpan( + text: '22:22', + style: widget.theme.timeStyle ?? Theme.of(context).textTheme.bodyText1, + ), maxLines: 1, textScaleFactor: MediaQuery.of(context).textScaleFactor, textDirection: TextDirection.ltr, diff --git a/lib/src/widgets/table.dart b/lib/src/widgets/table.dart index c6b196b..a593287 100644 --- a/lib/src/widgets/table.dart +++ b/lib/src/widgets/table.dart @@ -40,7 +40,8 @@ class Table extends StatelessWidget { children: [ Text( '${i.toString().padLeft(2, '0')}:00', - style: theme.timeStyle, + style: theme.timeStyle ?? + Theme.of(context).textTheme.bodyText1, ), SizedBox( width: theme.tableTextOffset,