diff --git a/example/android/build.gradle b/example/android/build.gradle index 3100ad2..a48a80d 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.9.10' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 296b146..cc5527d 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/example/lib/basic_example.dart b/example/lib/basic_example.dart index 6332c19..2324df5 100644 --- a/example/lib/basic_example.dart +++ b/example/lib/basic_example.dart @@ -1,8 +1,6 @@ -import 'package:drag_and_drop_lists/drag_and_drop_item.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; class BasicExample extends StatefulWidget { BasicExample({Key? key}) : super(key: key); @@ -57,7 +55,7 @@ class _BasicExample extends State { appBar: AppBar( title: Text('Basic'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: DragAndDropLists( children: _contents, onItemReorder: _onItemReorder, diff --git a/example/lib/drag_handle_example.dart b/example/lib/drag_handle_example.dart index 177f615..71177d2 100644 --- a/example/lib/drag_handle_example.dart +++ b/example/lib/drag_handle_example.dart @@ -1,8 +1,6 @@ import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; class DragHandleExample extends StatefulWidget { DragHandleExample({Key? key}) : super(key: key); @@ -86,7 +84,7 @@ class _DragHandleExample extends State { appBar: AppBar( title: Text('Drag Handle'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: DragAndDropLists( children: _contents, onItemReorder: _onItemReorder, diff --git a/example/lib/drag_into_list_example.dart b/example/lib/drag_into_list_example.dart index be76871..d7de0d2 100644 --- a/example/lib/drag_into_list_example.dart +++ b/example/lib/drag_into_list_example.dart @@ -1,9 +1,7 @@ -import 'package:drag_and_drop_lists/drag_and_drop_item.dart'; import 'package:drag_and_drop_lists/drag_and_drop_list_interface.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; class DragIntoListExample extends StatefulWidget { DragIntoListExample({Key? key}) : super(key: key); @@ -21,7 +19,7 @@ class _DragIntoListExample extends State { appBar: AppBar( title: Text('Drag Into List'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: Column( children: [ Flexible( diff --git a/example/lib/expansion_tile_example.dart b/example/lib/expansion_tile_example.dart index df96a01..a2c45aa 100644 --- a/example/lib/expansion_tile_example.dart +++ b/example/lib/expansion_tile_example.dart @@ -1,9 +1,6 @@ -import 'package:drag_and_drop_lists/drag_and_drop_list_expansion.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; class ExpansionTileExample extends StatefulWidget { ExpansionTileExample({Key? key}) : super(key: key); @@ -39,7 +36,7 @@ class _ListTileExample extends State { appBar: AppBar( title: Text('Expansion Tiles'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: DragAndDropLists( children: List.generate(_lists.length, (index) => _buildList(index)), onItemReorder: _onItemReorder, diff --git a/example/lib/fixed_example.dart b/example/lib/fixed_example.dart index 98b1bba..6953ba7 100644 --- a/example/lib/fixed_example.dart +++ b/example/lib/fixed_example.dart @@ -1,8 +1,6 @@ -import 'package:drag_and_drop_lists/drag_and_drop_item.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; class FixedExample extends StatefulWidget { FixedExample({Key? key}) : super(key: key); @@ -61,7 +59,7 @@ class _FixedExample extends State { appBar: AppBar( title: Text('Fixed Items'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: DragAndDropLists( children: _contents, onItemReorder: _onItemReorder, diff --git a/example/lib/horizontal_example.dart b/example/lib/horizontal_example.dart index 88da73e..a884c91 100644 --- a/example/lib/horizontal_example.dart +++ b/example/lib/horizontal_example.dart @@ -1,8 +1,6 @@ -import 'package:drag_and_drop_lists/drag_and_drop_item.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; class HorizontalExample extends StatefulWidget { HorizontalExample({Key? key}) : super(key: key); @@ -38,7 +36,7 @@ class _HorizontalExample extends State { appBar: AppBar( title: Text('Horizontal'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: DragAndDropLists( children: List.generate(_lists.length, (index) => _buildList(index)), onItemReorder: _onItemReorder, @@ -77,7 +75,7 @@ class _HorizontalExample extends State { padding: EdgeInsets.all(10), child: Text( 'Header ${innerList.name}', - style: Theme.of(context).primaryTextTheme.headline6, + style: Theme.of(context).primaryTextTheme.titleLarge, ), ), ), @@ -95,7 +93,7 @@ class _HorizontalExample extends State { padding: EdgeInsets.all(10), child: Text( 'Footer ${innerList.name}', - style: Theme.of(context).primaryTextTheme.headline6, + style: Theme.of(context).primaryTextTheme.titleLarge, ), ), ), diff --git a/example/lib/list_tile_example.dart b/example/lib/list_tile_example.dart index 0f1732f..79bd772 100644 --- a/example/lib/list_tile_example.dart +++ b/example/lib/list_tile_example.dart @@ -1,8 +1,6 @@ import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; class ListTileExample extends StatefulWidget { ListTileExample({Key? key}) : super(key: key); @@ -78,7 +76,7 @@ class _ListTileExample extends State { appBar: AppBar( title: Text('List Tiles'), ), - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: DragAndDropLists( children: _contents, onItemReorder: _onItemReorder, diff --git a/example/lib/navigation_drawer.dart b/example/lib/navigation_drawer.dart index 240d074..06379bc 100644 --- a/example/lib/navigation_drawer.dart +++ b/example/lib/navigation_drawer.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; class NavigationDrawer extends StatelessWidget { @override diff --git a/example/lib/sliver_example.dart b/example/lib/sliver_example.dart index c4bebed..60a141a 100644 --- a/example/lib/sliver_example.dart +++ b/example/lib/sliver_example.dart @@ -1,8 +1,6 @@ -import 'package:drag_and_drop_lists/drag_and_drop_item.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; -import 'package:example/navigation_drawer.dart'; +import 'package:example/navigation_drawer.dart' as drawer; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; class SliverExample extends StatefulWidget { SliverExample({Key? key}) : super(key: key); @@ -63,7 +61,7 @@ class _SliverExample extends State { @override Widget build(BuildContext context) { return Scaffold( - drawer: NavigationDrawer(), + drawer: drawer.NavigationDrawer(), body: CustomScrollView( controller: _scrollController, slivers: [ @@ -75,7 +73,7 @@ class _SliverExample extends State { alignment: Alignment.bottomCenter, child: Text( 'Slivers', - style: Theme.of(context).primaryTextTheme.headline1, + style: Theme.of(context).primaryTextTheme.displayLarge, ), ), ), diff --git a/example/pubspec.lock b/example/pubspec.lock index 2bc9e8e..ba04ccf 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: "486b7bc707424572cdf7bd7e812a0c146de3fd47ecadf070254cc60383f21dd8" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" drag_and_drop_lists: dependency: "direct main" description: @@ -61,9 +60,10 @@ packages: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -78,23 +78,42 @@ packages: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + pull_to_refresh: + dependency: transitive + description: + name: pull_to_refresh + sha256: bbadd5a931837b57739cf08736bea63167e284e71fb23b218c8c9a6e042aad12 + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "2.0.0" sky_engine: dependency: transitive description: flutter @@ -104,57 +123,66 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + url: "https://pub.dev" source: hosted - version: "0.2.19" - typed_data: + version: "0.6.0" + vector_math: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "1.3.0" - vector_math: + version: "2.1.4" + web: dependency: transitive description: - name: vector_math - url: "https://pub.dartlang.org" + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "0.1.4-beta" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" + flutter: ">=2.0.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 0fc3c2a..e22da31 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.12.0 <4.0.0' dependencies: flutter: diff --git a/lib/drag_and_drop_item_target.dart b/lib/drag_and_drop_item_target.dart index 02c768d..4b4bd9a 100644 --- a/lib/drag_and_drop_item_target.dart +++ b/lib/drag_and_drop_item_target.dart @@ -1,4 +1,3 @@ -import 'package:drag_and_drop_lists/drag_and_drop_builder_parameters.dart'; import 'package:drag_and_drop_lists/drag_and_drop_list_interface.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; import 'package:flutter/material.dart'; @@ -22,8 +21,7 @@ class DragAndDropItemTarget extends StatefulWidget { State createState() => _DragAndDropItemTarget(); } -class _DragAndDropItemTarget extends State - with TickerProviderStateMixin { +class _DragAndDropItemTarget extends State { DragAndDropItem? _hoveredDraggable; @override @@ -36,7 +34,6 @@ class _DragAndDropItemTarget extends State AnimatedSize( duration: Duration( milliseconds: widget.parameters.itemSizeAnimationDuration), - vsync: this, alignment: Alignment.bottomCenter, child: _hoveredDraggable != null ? Opacity( diff --git a/lib/drag_and_drop_item_wrapper.dart b/lib/drag_and_drop_item_wrapper.dart index 8dc8e7f..1c5a9d5 100644 --- a/lib/drag_and_drop_item_wrapper.dart +++ b/lib/drag_and_drop_item_wrapper.dart @@ -1,10 +1,6 @@ -import 'package:drag_and_drop_lists/drag_and_drop_builder_parameters.dart'; -import 'package:drag_and_drop_lists/drag_and_drop_item.dart'; import 'package:drag_and_drop_lists/drag_and_drop_lists.dart'; import 'package:drag_and_drop_lists/measure_size.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; class DragAndDropItemWrapper extends StatefulWidget { final DragAndDropItem child; @@ -18,8 +14,7 @@ class DragAndDropItemWrapper extends StatefulWidget { State createState() => _DragAndDropItemWrapper(); } -class _DragAndDropItemWrapper extends State - with TickerProviderStateMixin { +class _DragAndDropItemWrapper extends State { DragAndDropItem? _hoveredDraggable; bool _dragging = false; @@ -181,7 +176,6 @@ class _DragAndDropItemWrapper extends State draggable = AnimatedSize( duration: Duration( milliseconds: widget.parameters!.itemSizeAnimationDuration), - vsync: this, alignment: Alignment.bottomCenter, child: _hoveredDraggable != null ? Container() : widget.child.child, ); @@ -195,7 +189,6 @@ class _DragAndDropItemWrapper extends State AnimatedSize( duration: Duration( milliseconds: widget.parameters!.itemSizeAnimationDuration), - vsync: this, alignment: Alignment.topLeft, child: _hoveredDraggable != null ? Opacity( diff --git a/lib/drag_and_drop_list_target.dart b/lib/drag_and_drop_list_target.dart index 295e9ad..bc6ccf1 100644 --- a/lib/drag_and_drop_list_target.dart +++ b/lib/drag_and_drop_list_target.dart @@ -26,8 +26,7 @@ class DragAndDropListTarget extends StatefulWidget { State createState() => _DragAndDropListTarget(); } -class _DragAndDropListTarget extends State - with TickerProviderStateMixin { +class _DragAndDropListTarget extends State { DragAndDropListInterface? _hoveredDraggable; @override @@ -37,7 +36,6 @@ class _DragAndDropListTarget extends State AnimatedSize( duration: Duration( milliseconds: widget.parameters.listSizeAnimationDuration), - vsync: this, alignment: widget.parameters.axis == Axis.vertical ? Alignment.bottomCenter : Alignment.centerLeft, diff --git a/lib/drag_and_drop_list_wrapper.dart b/lib/drag_and_drop_list_wrapper.dart index 3316361..b2bd1b3 100644 --- a/lib/drag_and_drop_list_wrapper.dart +++ b/lib/drag_and_drop_list_wrapper.dart @@ -3,8 +3,6 @@ import 'package:drag_and_drop_lists/drag_and_drop_list_interface.dart'; import 'package:drag_and_drop_lists/drag_handle.dart'; import 'package:drag_and_drop_lists/measure_size.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; class DragAndDropListWrapper extends StatefulWidget { final DragAndDropListInterface dragAndDropList; @@ -18,8 +16,7 @@ class DragAndDropListWrapper extends StatefulWidget { State createState() => _DragAndDropListWrapper(); } -class _DragAndDropListWrapper extends State - with TickerProviderStateMixin { +class _DragAndDropListWrapper extends State { DragAndDropListInterface? _hoveredDraggable; bool _dragging = false; @@ -124,7 +121,6 @@ class _DragAndDropListWrapper extends State AnimatedSize( duration: Duration(milliseconds: widget.parameters.listSizeAnimationDuration), - vsync: this, alignment: widget.parameters.axis == Axis.vertical ? Alignment.bottomCenter : Alignment.centerLeft, diff --git a/lib/drag_and_drop_lists.dart b/lib/drag_and_drop_lists.dart index 9cbc116..150d5c9 100644 --- a/lib/drag_and_drop_lists.dart +++ b/lib/drag_and_drop_lists.dart @@ -24,6 +24,7 @@ import 'package:drag_and_drop_lists/drag_handle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/widgets.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; export 'package:drag_and_drop_lists/drag_and_drop_builder_parameters.dart'; export 'package:drag_and_drop_lists/drag_and_drop_item.dart'; @@ -280,6 +281,18 @@ class DragAndDropLists extends StatefulWidget { /// disable when setting customDragTargets final bool constrainDraggingAxis; + final RefreshController? refreshController; + + final VoidCallback? onRefresh; + + final VoidCallback? onLoading; + + final bool enablePullDown; + + final bool enablePullUp; + + final Widget? footer; + DragAndDropLists({ required this.children, required this.onItemReorder, @@ -329,6 +342,12 @@ class DragAndDropLists extends StatefulWidget { this.listDragHandle, this.itemDragHandle, this.constrainDraggingAxis = true, + this.refreshController, + this.onLoading, + this.onRefresh, + this.enablePullDown = true, + this.enablePullUp = false, + this.footer, Key? key, }) : super(key: key) { if (listGhost == null && @@ -430,7 +449,14 @@ class DragAndDropListsState extends State { outerListHolder = _buildUnscrollableList(dragAndDropListTarget, parameters); } else { - outerListHolder = _buildListView(parameters, dragAndDropListTarget); + outerListHolder = SmartRefresher( + controller: widget.refreshController ?? RefreshController(), + onRefresh: widget.onRefresh, + onLoading: widget.onLoading, + enablePullDown: widget.enablePullDown, + enablePullUp: widget.enablePullUp, + footer: widget.footer, + child: _buildListView(parameters, dragAndDropListTarget)); } if (widget.children diff --git a/lib/programmatic_expansion_tile.dart b/lib/programmatic_expansion_tile.dart index d083212..e1c1830 100644 --- a/lib/programmatic_expansion_tile.dart +++ b/lib/programmatic_expansion_tile.dart @@ -130,13 +130,13 @@ class ProgrammaticExpansionTileState extends State _controller.drive(_backgroundColorTween.chain(_easeOutTween)); _isExpanded = PageStorage.of(context) - ?.readState(context, identifier: widget.listKey) as bool? ?? + .readState(context, identifier: widget.listKey) as bool? ?? widget.initiallyExpanded; if (_isExpanded) _controller.value = 1.0; // Schedule the notification that widget has changed for after init // to ensure that the parent widget maintains the correct state - SchedulerBinding.instance!.addPostFrameCallback((Duration duration) { + SchedulerBinding.instance.addPostFrameCallback((Duration duration) { if (widget.onExpansionChanged != null && _isExpanded != widget.initiallyExpanded) { widget.onExpansionChanged!(_isExpanded); @@ -177,7 +177,7 @@ class ProgrammaticExpansionTileState extends State }); } PageStorage.of(context) - ?.writeState(context, _isExpanded, identifier: widget.listKey); + .writeState(context, _isExpanded, identifier: widget.listKey); }); if (widget.onExpansionChanged != null) { widget.onExpansionChanged!(_isExpanded); @@ -235,10 +235,10 @@ class ProgrammaticExpansionTileState extends State _borderColorTween.end = theme.dividerColor; _headerColorTween ..begin = theme.textTheme.subtitle1!.color - ..end = theme.accentColor; + ..end = theme.iconTheme.color; _iconColorTween ..begin = theme.unselectedWidgetColor - ..end = theme.accentColor; + ..end = theme.iconTheme.color; _backgroundColorTween.end = widget.backgroundColor; super.didChangeDependencies(); } diff --git a/pubspec.yaml b/pubspec.yaml index cc1bd9d..e1d3f67 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,11 +4,12 @@ version: 0.3.2 homepage: https://github.com/philip-brink/DragAndDropLists environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.12.0 <4.0.0' dependencies: flutter: sdk: flutter + pull_to_refresh: ^2.0.0 dev_dependencies: flutter_test: