From d527e8373219ddd5deb36a56190b614e1b8d758f Mon Sep 17 00:00:00 2001 From: QuentinS Date: Wed, 23 Oct 2019 14:14:48 +0200 Subject: [PATCH] add option for edge fadding --- example/lib/main.dart | 17 ++++++++ example/pubspec.lock | 7 ++++ lib/date_picker_timeline.dart | 73 ++++++++++++++++++++--------------- pubspec.lock | 7 ++++ pubspec.yaml | 1 + 5 files changed, 73 insertions(+), 32 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 9cc2d63..af15a6d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -56,6 +56,23 @@ class _MyHomePageState extends State { }); }, ), + Padding( + padding: EdgeInsets.all(50), + ), + Text("With edge fadding"), + Padding( + padding: EdgeInsets.all(10), + ), + DatePickerTimeline( + _selectedValue, + isEdgeFadding: true, + onDateChange: (date) { + // New date selected + setState(() { + _selectedValue = date; + }); + }, + ), ], ), )); diff --git a/example/pubspec.lock b/example/pubspec.lock index c17b8d4..de5a37a 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -43,6 +43,13 @@ packages: relative: true source: path version: "1.1.3" + fading_edge_scrollview: + dependency: transitive + description: + name: fading_edge_scrollview + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" flutter: dependency: "direct main" description: flutter diff --git a/lib/date_picker_timeline.dart b/lib/date_picker_timeline.dart index 877bf3b..379a06e 100644 --- a/lib/date_picker_timeline.dart +++ b/lib/date_picker_timeline.dart @@ -4,6 +4,7 @@ import 'package:date_picker_timeline/date_widget.dart'; import 'package:date_picker_timeline/extra/color.dart'; import 'package:date_picker_timeline/extra/style.dart'; import 'package:date_picker_timeline/gestures/tap.dart'; +import 'package:fading_edge_scrollview/fading_edge_scrollview.dart'; import 'package:flutter/material.dart'; import 'package:intl/date_symbol_data_local.dart'; @@ -17,6 +18,7 @@ class DatePickerTimeline extends StatefulWidget { DateChangeListener onDateChange; int daysCount; String locale; + bool isEdgeFadding; // Creates the DatePickerTimeline Widget DatePickerTimeline( @@ -31,6 +33,7 @@ class DatePickerTimeline extends StatefulWidget { this.daysCount = 50000, this.onDateChange, this.locale = "en_US", + this.isEdgeFadding = false, }) : super(key: key); @override @@ -38,8 +41,8 @@ class DatePickerTimeline extends StatefulWidget { } class _DatePickerState extends State { - - @override void initState() { + @override + void initState() { super.initState(); initializeDateFormatting(widget.locale, null); @@ -48,37 +51,43 @@ class _DatePickerState extends State { @override Widget build(BuildContext context) { return Container( - width: widget.width, - height: widget.height, - child: ListView.builder( - itemCount: widget.daysCount, - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - // Return the Date Widget - DateTime _date = DateTime.now().add(Duration(days: index)); - DateTime date = new DateTime(_date.year, _date.month, _date.day); - bool isSelected = compareDate(date, widget.currentDate); + width: widget.width, + height: widget.height, + child: widget.isEdgeFadding + ? (FadingEdgeScrollView.fromScrollView(child: buildList(context))) + : buildList(context)); + } + + Widget buildList(BuildContext context) { + return ListView.builder( + itemCount: widget.daysCount, + scrollDirection: Axis.horizontal, + controller: new ScrollController(), + itemBuilder: (context, index) { + // Return the Date Widget + DateTime _date = DateTime.now().add(Duration(days: index)); + DateTime date = new DateTime(_date.year, _date.month, _date.day); + bool isSelected = compareDate(date, widget.currentDate); - return DateWidget( - date: date, - monthTextStyle: widget.monthTextStyle, - dateTextStyle: widget.dateTextStyle, - dayTextStyle: widget.dayTextStyle, - locale: widget.locale, - selectionColor: - isSelected ? widget.selectionColor : Colors.transparent, - onDateSelected: (selectedDate) { - // A date is selected - if (widget.onDateChange != null) { - widget.onDateChange(selectedDate); - } - setState(() { - widget.currentDate = selectedDate; - }); - }, - ); - }, - ), + return DateWidget( + date: date, + monthTextStyle: widget.monthTextStyle, + dateTextStyle: widget.dateTextStyle, + dayTextStyle: widget.dayTextStyle, + locale: widget.locale, + selectionColor: + isSelected ? widget.selectionColor : Colors.transparent, + onDateSelected: (selectedDate) { + // A date is selected + if (widget.onDateChange != null) { + widget.onDateChange(selectedDate); + } + setState(() { + widget.currentDate = selectedDate; + }); + }, + ); + }, ); } diff --git a/pubspec.lock b/pubspec.lock index c6e584e..ef00ce5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -29,6 +29,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.14.11" + fading_edge_scrollview: + dependency: "direct main" + description: + name: fading_edge_scrollview + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" flutter: dependency: "direct main" description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 8dfb793..bc3ee69 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,7 @@ environment: dependencies: flutter: sdk: flutter + fading_edge_scrollview: ^1.0.2 intl: ^0.16.0 dev_dependencies: