Showing
12 changed files
with
70 additions
and
66 deletions
| 1 | +include: package:lints/recommended.yaml |
| 1 | import 'package:flutter/cupertino.dart'; | 1 | import 'package:flutter/cupertino.dart'; |
| 2 | import 'package:flutter/foundation.dart'; | 2 | import 'package:flutter/foundation.dart'; |
| 3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 4 | -import 'package:url_launcher/url_launcher.dart'; | 4 | +import 'package:url_launcher/url_launcher_string.dart'; |
| 5 | 5 | ||
| 6 | class WebFrame extends StatelessWidget { | 6 | class WebFrame extends StatelessWidget { |
| 7 | final Widget child; | 7 | final Widget child; |
| @@ -133,14 +133,14 @@ class WebFrame extends StatelessWidget { | @@ -133,14 +133,14 @@ class WebFrame extends StatelessWidget { | ||
| 133 | Row( | 133 | Row( |
| 134 | children: <Widget>[ | 134 | children: <Widget>[ |
| 135 | InkWell( | 135 | InkWell( |
| 136 | - onTap: () => launch( | 136 | + onTap: () => launchUrlString( |
| 137 | 'https://pub.dev/packages/modal_bottom_sheet'), | 137 | 'https://pub.dev/packages/modal_bottom_sheet'), |
| 138 | child: Image.asset('assets/flutter.png', | 138 | child: Image.asset('assets/flutter.png', |
| 139 | height: 60), | 139 | height: 60), |
| 140 | ), | 140 | ), |
| 141 | Spacer(), | 141 | Spacer(), |
| 142 | InkWell( | 142 | InkWell( |
| 143 | - onTap: () => launch( | 143 | + onTap: () => launchUrlString( |
| 144 | 'https://github.com/jamesblasco/modal_bottom_sheet'), | 144 | 'https://github.com/jamesblasco/modal_bottom_sheet'), |
| 145 | child: Image.asset('assets/github.png', | 145 | child: Image.asset('assets/github.png', |
| 146 | height: 60), | 146 | height: 60), |
| @@ -49,7 +49,7 @@ packages: | @@ -49,7 +49,7 @@ packages: | ||
| 49 | name: cupertino_icons | 49 | name: cupertino_icons |
| 50 | url: "https://pub.dartlang.org" | 50 | url: "https://pub.dartlang.org" |
| 51 | source: hosted | 51 | source: hosted |
| 52 | - version: "0.1.3" | 52 | + version: "1.0.5" |
| 53 | fake_async: | 53 | fake_async: |
| 54 | dependency: transitive | 54 | dependency: transitive |
| 55 | description: | 55 | description: |
| @@ -174,56 +174,56 @@ packages: | @@ -174,56 +174,56 @@ packages: | ||
| 174 | name: url_launcher | 174 | name: url_launcher |
| 175 | url: "https://pub.dartlang.org" | 175 | url: "https://pub.dartlang.org" |
| 176 | source: hosted | 176 | source: hosted |
| 177 | - version: "6.0.20" | 177 | + version: "6.1.5" |
| 178 | url_launcher_android: | 178 | url_launcher_android: |
| 179 | dependency: transitive | 179 | dependency: transitive |
| 180 | description: | 180 | description: |
| 181 | name: url_launcher_android | 181 | name: url_launcher_android |
| 182 | url: "https://pub.dartlang.org" | 182 | url: "https://pub.dartlang.org" |
| 183 | source: hosted | 183 | source: hosted |
| 184 | - version: "6.0.15" | 184 | + version: "6.0.17" |
| 185 | url_launcher_ios: | 185 | url_launcher_ios: |
| 186 | dependency: transitive | 186 | dependency: transitive |
| 187 | description: | 187 | description: |
| 188 | name: url_launcher_ios | 188 | name: url_launcher_ios |
| 189 | url: "https://pub.dartlang.org" | 189 | url: "https://pub.dartlang.org" |
| 190 | source: hosted | 190 | source: hosted |
| 191 | - version: "6.0.15" | 191 | + version: "6.0.17" |
| 192 | url_launcher_linux: | 192 | url_launcher_linux: |
| 193 | dependency: transitive | 193 | dependency: transitive |
| 194 | description: | 194 | description: |
| 195 | name: url_launcher_linux | 195 | name: url_launcher_linux |
| 196 | url: "https://pub.dartlang.org" | 196 | url: "https://pub.dartlang.org" |
| 197 | source: hosted | 197 | source: hosted |
| 198 | - version: "3.0.0" | 198 | + version: "3.0.1" |
| 199 | url_launcher_macos: | 199 | url_launcher_macos: |
| 200 | dependency: transitive | 200 | dependency: transitive |
| 201 | description: | 201 | description: |
| 202 | name: url_launcher_macos | 202 | name: url_launcher_macos |
| 203 | url: "https://pub.dartlang.org" | 203 | url: "https://pub.dartlang.org" |
| 204 | source: hosted | 204 | source: hosted |
| 205 | - version: "3.0.0" | 205 | + version: "3.0.1" |
| 206 | url_launcher_platform_interface: | 206 | url_launcher_platform_interface: |
| 207 | dependency: transitive | 207 | dependency: transitive |
| 208 | description: | 208 | description: |
| 209 | name: url_launcher_platform_interface | 209 | name: url_launcher_platform_interface |
| 210 | url: "https://pub.dartlang.org" | 210 | url: "https://pub.dartlang.org" |
| 211 | source: hosted | 211 | source: hosted |
| 212 | - version: "2.0.5" | 212 | + version: "2.1.0" |
| 213 | url_launcher_web: | 213 | url_launcher_web: |
| 214 | dependency: transitive | 214 | dependency: transitive |
| 215 | description: | 215 | description: |
| 216 | name: url_launcher_web | 216 | name: url_launcher_web |
| 217 | url: "https://pub.dartlang.org" | 217 | url: "https://pub.dartlang.org" |
| 218 | source: hosted | 218 | source: hosted |
| 219 | - version: "2.0.9" | 219 | + version: "2.0.13" |
| 220 | url_launcher_windows: | 220 | url_launcher_windows: |
| 221 | dependency: transitive | 221 | dependency: transitive |
| 222 | description: | 222 | description: |
| 223 | name: url_launcher_windows | 223 | name: url_launcher_windows |
| 224 | url: "https://pub.dartlang.org" | 224 | url: "https://pub.dartlang.org" |
| 225 | source: hosted | 225 | source: hosted |
| 226 | - version: "3.0.0" | 226 | + version: "3.0.1" |
| 227 | vector_math: | 227 | vector_math: |
| 228 | dependency: transitive | 228 | dependency: transitive |
| 229 | description: | 229 | description: |
| @@ -14,19 +14,17 @@ publish_to: none | @@ -14,19 +14,17 @@ publish_to: none | ||
| 14 | version: 1.0.0+1 | 14 | version: 1.0.0+1 |
| 15 | 15 | ||
| 16 | environment: | 16 | environment: |
| 17 | - sdk: ">=2.12.0-29.10.beta <3.0.0" | 17 | + flutter: ">=3.0.0" |
| 18 | + sdk: '>=2.17.0 <3.0.0' | ||
| 19 | + | ||
| 18 | 20 | ||
| 19 | dependencies: | 21 | dependencies: |
| 22 | + cupertino_icons: ^1.0.5 | ||
| 20 | flutter: | 23 | flutter: |
| 21 | sdk: flutter | 24 | sdk: flutter |
| 22 | - url_launcher: ^6.0.20 | ||
| 23 | modal_bottom_sheet: | 25 | modal_bottom_sheet: |
| 24 | path: '../' | 26 | path: '../' |
| 25 | - | ||
| 26 | - | ||
| 27 | - # The following adds the Cupertino Icons font to your application. | ||
| 28 | - # Use with the CupertinoIcons class for iOS style icons. | ||
| 29 | - cupertino_icons: ^0.1.3 | 27 | + url_launcher: ^6.1.5 |
| 30 | 28 | ||
| 31 | dev_dependencies: | 29 | dev_dependencies: |
| 32 | flutter_test: | 30 | flutter_test: |
| @@ -101,7 +101,7 @@ class ModalBottomSheet extends StatefulWidget { | @@ -101,7 +101,7 @@ class ModalBottomSheet extends StatefulWidget { | ||
| 101 | final ScrollController scrollController; | 101 | final ScrollController scrollController; |
| 102 | 102 | ||
| 103 | @override | 103 | @override |
| 104 | - _ModalBottomSheetState createState() => _ModalBottomSheetState(); | 104 | + ModalBottomSheetState createState() => ModalBottomSheetState(); |
| 105 | 105 | ||
| 106 | /// Creates an [AnimationController] suitable for a | 106 | /// Creates an [AnimationController] suitable for a |
| 107 | /// [ModalBottomSheet.animationController]. | 107 | /// [ModalBottomSheet.animationController]. |
| @@ -121,7 +121,7 @@ class ModalBottomSheet extends StatefulWidget { | @@ -121,7 +121,7 @@ class ModalBottomSheet extends StatefulWidget { | ||
| 121 | } | 121 | } |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | -class _ModalBottomSheetState extends State<ModalBottomSheet> | 124 | +class ModalBottomSheetState extends State<ModalBottomSheet> |
| 125 | with TickerProviderStateMixin { | 125 | with TickerProviderStateMixin { |
| 126 | final GlobalKey _childKey = GlobalKey(debugLabel: 'BottomSheet child'); | 126 | final GlobalKey _childKey = GlobalKey(debugLabel: 'BottomSheet child'); |
| 127 | 127 |
| @@ -6,7 +6,7 @@ import 'package:flutter/services.dart'; | @@ -6,7 +6,7 @@ import 'package:flutter/services.dart'; | ||
| 6 | import '../../modal_bottom_sheet.dart'; | 6 | import '../../modal_bottom_sheet.dart'; |
| 7 | import '../bottom_sheet_route.dart'; | 7 | import '../bottom_sheet_route.dart'; |
| 8 | 8 | ||
| 9 | -const Radius _default_bar_top_radius = Radius.circular(15); | 9 | +const Radius kDefaultBarTopRadius = Radius.circular(15); |
| 10 | 10 | ||
| 11 | class BarBottomSheet extends StatelessWidget { | 11 | class BarBottomSheet extends StatelessWidget { |
| 12 | final Widget child; | 12 | final Widget child; |
| @@ -57,8 +57,8 @@ class BarBottomSheet extends StatelessWidget { | @@ -57,8 +57,8 @@ class BarBottomSheet extends StatelessWidget { | ||
| 57 | RoundedRectangleBorder( | 57 | RoundedRectangleBorder( |
| 58 | side: BorderSide(), | 58 | side: BorderSide(), |
| 59 | borderRadius: BorderRadius.only( | 59 | borderRadius: BorderRadius.only( |
| 60 | - topLeft: _default_bar_top_radius, | ||
| 61 | - topRight: _default_bar_top_radius), | 60 | + topLeft: kDefaultBarTopRadius, |
| 61 | + topRight: kDefaultBarTopRadius), | ||
| 62 | ), | 62 | ), |
| 63 | clipBehavior: clipBehavior ?? Clip.hardEdge, | 63 | clipBehavior: clipBehavior ?? Clip.hardEdge, |
| 64 | color: backgroundColor ?? Colors.white, | 64 | color: backgroundColor ?? Colors.white, |
| @@ -46,17 +46,17 @@ class _CupertinoBottomSheetContainer extends StatelessWidget { | @@ -46,17 +46,17 @@ class _CupertinoBottomSheetContainer extends StatelessWidget { | ||
| 46 | final topSafeAreaPadding = MediaQuery.of(context).padding.top; | 46 | final topSafeAreaPadding = MediaQuery.of(context).padding.top; |
| 47 | final topPadding = _kPreviousPageVisibleOffset + topSafeAreaPadding; | 47 | final topPadding = _kPreviousPageVisibleOffset + topSafeAreaPadding; |
| 48 | 48 | ||
| 49 | - final _shadow = shadow ?? _kDefaultBoxShadow; | 49 | + final shadow = this.shadow ?? _kDefaultBoxShadow; |
| 50 | BoxShadow(blurRadius: 10, color: Colors.black12, spreadRadius: 5); | 50 | BoxShadow(blurRadius: 10, color: Colors.black12, spreadRadius: 5); |
| 51 | - final _backgroundColor = | ||
| 52 | - backgroundColor ?? CupertinoTheme.of(context).scaffoldBackgroundColor; | 51 | + final backgroundColor = this.backgroundColor ?? |
| 52 | + CupertinoTheme.of(context).scaffoldBackgroundColor; | ||
| 53 | return Padding( | 53 | return Padding( |
| 54 | padding: EdgeInsets.only(top: topPadding), | 54 | padding: EdgeInsets.only(top: topPadding), |
| 55 | child: ClipRRect( | 55 | child: ClipRRect( |
| 56 | borderRadius: BorderRadius.vertical(top: topRadius), | 56 | borderRadius: BorderRadius.vertical(top: topRadius), |
| 57 | child: Container( | 57 | child: Container( |
| 58 | decoration: | 58 | decoration: |
| 59 | - BoxDecoration(color: _backgroundColor, boxShadow: [_shadow]), | 59 | + BoxDecoration(color: backgroundColor, boxShadow: [shadow]), |
| 60 | width: double.infinity, | 60 | width: double.infinity, |
| 61 | child: MediaQuery.removePadding( | 61 | child: MediaQuery.removePadding( |
| 62 | context: context, | 62 | context: context, |
| @@ -211,10 +211,10 @@ class CupertinoModalBottomSheetRoute<T> extends ModalBottomSheetRoute<T> { | @@ -211,10 +211,10 @@ class CupertinoModalBottomSheetRoute<T> extends ModalBottomSheetRoute<T> { | ||
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | @override | 213 | @override |
| 214 | - Widget getPreviousRouteTransition(BuildContext context, | ||
| 215 | - Animation<double> secondaryAnimation, Widget child) { | 214 | + Widget getPreviousRouteTransition( |
| 215 | + BuildContext context, Animation<double> secondAnimation, Widget child) { | ||
| 216 | return _CupertinoModalTransition( | 216 | return _CupertinoModalTransition( |
| 217 | - secondaryAnimation: secondaryAnimation, | 217 | + secondaryAnimation: secondAnimation, |
| 218 | body: child, | 218 | body: child, |
| 219 | animationCurve: previousRouteAnimationCurve, | 219 | animationCurve: previousRouteAnimationCurve, |
| 220 | topRadius: topRadius, | 220 | topRadius: topRadius, |
| @@ -290,20 +290,16 @@ class _CupertinoModalTransition extends StatelessWidget { | @@ -290,20 +290,16 @@ class _CupertinoModalTransition extends StatelessWidget { | ||
| 290 | } | 290 | } |
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | -class _CupertinoScaffold extends InheritedWidget { | 293 | +class CupertinoScaffoldInheirted extends InheritedWidget { |
| 294 | final AnimationController? animation; | 294 | final AnimationController? animation; |
| 295 | 295 | ||
| 296 | final Radius? topRadius; | 296 | final Radius? topRadius; |
| 297 | 297 | ||
| 298 | - @override | ||
| 299 | - final Widget child; | ||
| 300 | - | ||
| 301 | - const _CupertinoScaffold({ | ||
| 302 | - Key? key, | 298 | + const CupertinoScaffoldInheirted({ |
| 303 | this.animation, | 299 | this.animation, |
| 304 | - required this.child, | 300 | + required super.child, |
| 305 | this.topRadius, | 301 | this.topRadius, |
| 306 | - }) : super(key: key, child: child); | 302 | + }) : super(); |
| 307 | 303 | ||
| 308 | @override | 304 | @override |
| 309 | bool updateShouldNotify(InheritedWidget oldWidget) { | 305 | bool updateShouldNotify(InheritedWidget oldWidget) { |
| @@ -313,8 +309,8 @@ class _CupertinoScaffold extends InheritedWidget { | @@ -313,8 +309,8 @@ class _CupertinoScaffold extends InheritedWidget { | ||
| 313 | 309 | ||
| 314 | // Support | 310 | // Support |
| 315 | class CupertinoScaffold extends StatefulWidget { | 311 | class CupertinoScaffold extends StatefulWidget { |
| 316 | - static _CupertinoScaffold? of(BuildContext context) => | ||
| 317 | - context.dependOnInheritedWidgetOfExactType<_CupertinoScaffold>(); | 312 | + static CupertinoScaffoldInheirted? of(BuildContext context) => |
| 313 | + context.dependOnInheritedWidgetOfExactType<CupertinoScaffoldInheirted>(); | ||
| 318 | 314 | ||
| 319 | final Widget body; | 315 | final Widget body; |
| 320 | final Radius topRadius; | 316 | final Radius topRadius; |
| @@ -405,7 +401,7 @@ class _CupertinoScaffoldState extends State<CupertinoScaffold> | @@ -405,7 +401,7 @@ class _CupertinoScaffoldState extends State<CupertinoScaffold> | ||
| 405 | 401 | ||
| 406 | @override | 402 | @override |
| 407 | Widget build(BuildContext context) { | 403 | Widget build(BuildContext context) { |
| 408 | - return _CupertinoScaffold( | 404 | + return CupertinoScaffoldInheirted( |
| 409 | animation: animationController, | 405 | animation: animationController, |
| 410 | topRadius: widget.topRadius, | 406 | topRadius: widget.topRadius, |
| 411 | child: _CupertinoModalTransition( | 407 | child: _CupertinoModalTransition( |
| @@ -61,17 +61,18 @@ WidgetWithChildBuilder _materialContainerBuilder(BuildContext context, | @@ -61,17 +61,18 @@ WidgetWithChildBuilder _materialContainerBuilder(BuildContext context, | ||
| 61 | final color = backgroundColor ?? | 61 | final color = backgroundColor ?? |
| 62 | bottomSheetTheme.modalBackgroundColor ?? | 62 | bottomSheetTheme.modalBackgroundColor ?? |
| 63 | bottomSheetTheme.backgroundColor; | 63 | bottomSheetTheme.backgroundColor; |
| 64 | - final _elevation = elevation ?? bottomSheetTheme.elevation ?? 0.0; | ||
| 65 | - final _shape = shape ?? bottomSheetTheme.shape; | ||
| 66 | - final _clipBehavior = | 64 | + final effectiveElevation = elevation ?? bottomSheetTheme.elevation ?? 0.0; |
| 65 | + final effectiveShape = shape ?? bottomSheetTheme.shape; | ||
| 66 | + final effectiveClipBehavior = | ||
| 67 | clipBehavior ?? bottomSheetTheme.clipBehavior ?? Clip.none; | 67 | clipBehavior ?? bottomSheetTheme.clipBehavior ?? Clip.none; |
| 68 | 68 | ||
| 69 | - final result = (context, animation, child) => Material( | ||
| 70 | - color: color, | ||
| 71 | - elevation: _elevation, | ||
| 72 | - shape: _shape, | ||
| 73 | - clipBehavior: _clipBehavior, | ||
| 74 | - child: child); | 69 | + Widget result(context, animation, child) => Material( |
| 70 | + color: color, | ||
| 71 | + elevation: effectiveElevation, | ||
| 72 | + shape: effectiveShape, | ||
| 73 | + clipBehavior: effectiveClipBehavior, | ||
| 74 | + child: child, | ||
| 75 | + ); | ||
| 75 | if (theme != null) { | 76 | if (theme != null) { |
| 76 | return (context, animation, child) => | 77 | return (context, animation, child) => |
| 77 | Theme(data: theme, child: result(context, animation, child)); | 78 | Theme(data: theme, child: result(context, animation, child)); |
| @@ -15,10 +15,10 @@ class ScrollToTopStatusBarHandler extends StatefulWidget { | @@ -15,10 +15,10 @@ class ScrollToTopStatusBarHandler extends StatefulWidget { | ||
| 15 | }) : super(key: key); | 15 | }) : super(key: key); |
| 16 | 16 | ||
| 17 | @override | 17 | @override |
| 18 | - _ScrollToTopStatusBarState createState() => _ScrollToTopStatusBarState(); | 18 | + ScrollToTopStatusBarState createState() => ScrollToTopStatusBarState(); |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | -class _ScrollToTopStatusBarState extends State<ScrollToTopStatusBarHandler> { | 21 | +class ScrollToTopStatusBarState extends State<ScrollToTopStatusBarHandler> { |
| 22 | @override | 22 | @override |
| 23 | void initState() { | 23 | void initState() { |
| 24 | super.initState(); | 24 | super.initState(); |
| @@ -60,6 +60,13 @@ packages: | @@ -60,6 +60,13 @@ packages: | ||
| 60 | description: flutter | 60 | description: flutter |
| 61 | source: sdk | 61 | source: sdk |
| 62 | version: "0.0.0" | 62 | version: "0.0.0" |
| 63 | + lints: | ||
| 64 | + dependency: "direct dev" | ||
| 65 | + description: | ||
| 66 | + name: lints | ||
| 67 | + url: "https://pub.dartlang.org" | ||
| 68 | + source: hosted | ||
| 69 | + version: "2.0.0" | ||
| 63 | matcher: | 70 | matcher: |
| 64 | dependency: transitive | 71 | dependency: transitive |
| 65 | description: | 72 | description: |
| @@ -12,34 +12,34 @@ void main() { | @@ -12,34 +12,34 @@ void main() { | ||
| 12 | Future<void> Function(BuildContext context, WidgetBuilder builder) | 12 | Future<void> Function(BuildContext context, WidgetBuilder builder) |
| 13 | onPressed, | 13 | onPressed, |
| 14 | ) async { | 14 | ) async { |
| 15 | - int _initState = 0, _dispose = 0; | 15 | + int initState = 0, dispose = 0; |
| 16 | await _pumpWidget( | 16 | await _pumpWidget( |
| 17 | tester: tester, | 17 | tester: tester, |
| 18 | onPressed: (context) => onPressed( | 18 | onPressed: (context) => onPressed( |
| 19 | context, | 19 | context, |
| 20 | (_) => _TestWidget( | 20 | (_) => _TestWidget( |
| 21 | - onInitState: () => _initState++, | ||
| 22 | - onDispose: () => _dispose++, | 21 | + onInitState: () => initState++, |
| 22 | + onDispose: () => dispose++, | ||
| 23 | ), | 23 | ), |
| 24 | ), | 24 | ), |
| 25 | ); | 25 | ); |
| 26 | - expect(_initState, 0); | 26 | + expect(initState, 0); |
| 27 | await tester.tap(_textButtonWithText('Press me')); | 27 | await tester.tap(_textButtonWithText('Press me')); |
| 28 | await tester.pumpAndSettle(); | 28 | await tester.pumpAndSettle(); |
| 29 | - expect(_initState, 1); | ||
| 30 | - expect(_dispose, 0); | 29 | + expect(initState, 1); |
| 30 | + expect(dispose, 0); | ||
| 31 | await tester.tap(_textButtonWithText('TestWidget push')); | 31 | await tester.tap(_textButtonWithText('TestWidget push')); |
| 32 | await tester.pumpAndSettle(); | 32 | await tester.pumpAndSettle(); |
| 33 | - expect(_initState, 1); | ||
| 34 | - expect(_dispose, 0); | 33 | + expect(initState, 1); |
| 34 | + expect(dispose, 0); | ||
| 35 | await tester.tap(_textButtonWithText('TestWidget pushed pop')); | 35 | await tester.tap(_textButtonWithText('TestWidget pushed pop')); |
| 36 | await tester.pumpAndSettle(); | 36 | await tester.pumpAndSettle(); |
| 37 | - expect(_initState, 1); | ||
| 38 | - expect(_dispose, 0); | 37 | + expect(initState, 1); |
| 38 | + expect(dispose, 0); | ||
| 39 | await tester.tap(_textButtonWithText('TestWidget pop')); | 39 | await tester.tap(_textButtonWithText('TestWidget pop')); |
| 40 | await tester.pumpAndSettle(); | 40 | await tester.pumpAndSettle(); |
| 41 | - expect(_initState, 1); | ||
| 42 | - expect(_dispose, 1); | 41 | + expect(initState, 1); |
| 42 | + expect(dispose, 1); | ||
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | testWidgets('with showCupertinoModalBottomSheet', (tester) { | 45 | testWidgets('with showCupertinoModalBottomSheet', (tester) { |
-
Please register or login to post a comment