diff --git a/lib/widgets/story_view.dart b/lib/widgets/story_view.dart index 3a6e8db1..43f942e7 100644 --- a/lib/widgets/story_view.dart +++ b/lib/widgets/story_view.dart @@ -79,10 +79,11 @@ class StoryItem { bottom: Radius.circular(roundedBottom ? 8 : 0), ), ), - padding: textOuterPadding?? EdgeInsets.symmetric( - horizontal: 24, - vertical: 16, - ), + padding: textOuterPadding ?? + EdgeInsets.symmetric( + horizontal: 24, + vertical: 16, + ), child: Center( child: Text( title, @@ -140,12 +141,13 @@ class StoryItem { margin: EdgeInsets.only( bottom: 24, ), - padding: captionOuterPadding?? EdgeInsets.symmetric( - horizontal: 24, - vertical: 8, - ), + padding: captionOuterPadding ?? + EdgeInsets.symmetric( + horizontal: 24, + vertical: 8, + ), color: caption != null ? Colors.black54 : Colors.transparent, - child: caption?? const SizedBox.shrink(), + child: caption ?? const SizedBox.shrink(), ), ), ) @@ -193,11 +195,12 @@ class StoryItem { ), Container( margin: EdgeInsets.only(bottom: 16), - padding: captionOuterPadding?? EdgeInsets.symmetric(horizontal: 24, vertical: 8), + padding: captionOuterPadding ?? + EdgeInsets.symmetric(horizontal: 24, vertical: 8), child: Align( alignment: Alignment.bottomLeft, child: Container( - child: caption?? const SizedBox.shrink(), + child: caption ?? const SizedBox.shrink(), width: double.infinity, ), ), @@ -252,7 +255,7 @@ class StoryItem { padding: EdgeInsets.symmetric(horizontal: 24, vertical: 8), color: caption != null ? Colors.black54 : Colors.transparent, - child: caption?? const SizedBox.shrink(), + child: caption ?? const SizedBox.shrink(), ), ), ) @@ -406,6 +409,7 @@ class StoryView extends StatefulWidget { /// Indicator Color final Color? indicatorColor; + /// Indicator Foreground Color final Color? indicatorForegroundColor; @@ -427,7 +431,10 @@ class StoryView extends StatefulWidget { this.indicatorColor, this.indicatorForegroundColor, this.indicatorHeight = IndicatorHeight.large, - this.indicatorOuterPadding = const EdgeInsets.symmetric(horizontal: 16, vertical: 8,), + this.indicatorOuterPadding = const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), }); @override @@ -674,7 +681,9 @@ class StoryViewState extends State with TickerProviderStateMixin { if (_nextDebouncer?.isActive == false) { widget.controller.play(); } else { - widget.controller.next(); + Directionality.of(context) == TextDirection.ltr + ? widget.controller.next() + : widget.controller.previous(); } }, onVerticalDragStart: widget.onVerticalSwipeComplete == null @@ -717,7 +726,9 @@ class StoryViewState extends State with TickerProviderStateMixin { heightFactor: 1, child: SizedBox( child: GestureDetector(onTap: () { - widget.controller.previous(); + Directionality.of(context) == TextDirection.ltr + ? widget.controller.previous() + : widget.controller.next(); }), width: 70), ), @@ -796,8 +807,11 @@ class PageBarState extends State { right: widget.pages.last == it ? 0 : this.spacing), child: StoryProgressIndicator( isPlaying(it) ? widget.animation!.value : (it.shown ? 1 : 0), - indicatorHeight: - widget.indicatorHeight == IndicatorHeight.large ? 5 : widget.indicatorHeight == IndicatorHeight.medium ? 3 : 2, + indicatorHeight: widget.indicatorHeight == IndicatorHeight.large + ? 5 + : widget.indicatorHeight == IndicatorHeight.medium + ? 3 + : 2, indicatorColor: widget.indicatorColor, indicatorForegroundColor: widget.indicatorForegroundColor, ), @@ -826,17 +840,23 @@ class StoryProgressIndicator extends StatelessWidget { @override Widget build(BuildContext context) { - return CustomPaint( - size: Size.fromHeight( - this.indicatorHeight, - ), - foregroundPainter: IndicatorOval( - this.indicatorForegroundColor?? Colors.white.withOpacity(0.8), - this.value, - ), - painter: IndicatorOval( - this.indicatorColor?? Colors.white.withOpacity(0.4), - 1.0, + return Transform( + transform: Matrix4.identity() + ..scale(Directionality.of(context) == TextDirection.rtl ? -1.0 : 1.0, + 1.0, 1.0), // Flip horizontally by setting x scale to -1 + alignment: Alignment.center, + child: CustomPaint( + size: Size.fromHeight( + this.indicatorHeight, + ), + foregroundPainter: IndicatorOval( + this.indicatorForegroundColor ?? Colors.white.withOpacity(0.8), + this.value, + ), + painter: IndicatorOval( + this.indicatorColor ?? Colors.white.withOpacity(0.4), + 1.0, + ), ), ); } diff --git a/pubspec.lock b/pubspec.lock index 87f64eb9..40be56df 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -136,38 +136,62 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.12.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: transitive description: @@ -321,10 +345,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" typed_data: dependency: transitive description: @@ -389,6 +413,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + url: "https://pub.dev" + source: hosted + version: "14.2.1" web: dependency: transitive description: @@ -414,5 +446,5 @@ packages: source: hosted version: "1.0.4" sdks: - dart: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54"