Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
modal_bottom_sheet
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jaime Blasco
2024-11-18 19:30:04 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2024-11-18 19:30:04 +0100
Commit
a87f82b4872042ca0ff2f5d5ab75c432532b94b5
a87f82b4
1 parent
c6718a0e
feat: pop scope (#437)
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
174 additions
and
103 deletions
modal_bottom_sheet/README.md
modal_bottom_sheet/example/ios/Flutter/AppFrameworkInfo.plist
modal_bottom_sheet/example/ios/Podfile
modal_bottom_sheet/example/ios/Podfile.lock
modal_bottom_sheet/example/ios/Runner.xcodeproj/project.pbxproj
modal_bottom_sheet/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
modal_bottom_sheet/example/lib/main.dart
modal_bottom_sheet/example/lib/modals/modal_complex_all.dart
modal_bottom_sheet/example/lib/modals/modal_will_scope.dart
modal_bottom_sheet/example/pubspec.lock
modal_bottom_sheet/lib/src/bottom_sheet_route.dart
sheet/example/ios/Flutter/AppFrameworkInfo.plist
sheet/example/ios/Runner.xcodeproj/project.pbxproj
sheet/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
sheet/example/lib/examples/route/examples/modal_complex_all.dart
sheet/example/lib/examples/route/examples/modal_fit_will_scope.dart
sheet/example/lib/examples/route/examples/modal_will_scope.dart
sheet/example/lib/examples/sheet/fold_screen_sheet.dart
sheet/example/lib/examples/sheet/sheet_without_momentum.dart
sheet/example/lib/examples/sheet/snap_sheet.dart
sheet/example/lib/examples/sheet/text_field.dart
sheet/example/lib/route_example_page.dart
sheet/example/pubspec.lock
sheet/example/pubspec.yaml
sheet/lib/src/route/sheet_route.dart
modal_bottom_sheet/README.md
View file @
a87f82b
...
...
@@ -20,7 +20,7 @@ Why not `showModalBottomSheet`?
Inspired by
`showModalBottomSheet`
, it completes with some must-need features:
-
Support for inside scrollview + dragging down to close (
`showModalBottomSheet`
won't work correctly with scrollviews.
-
Support for
`WillPopScope`
to prevent closing the dialog.
-
Support for
`
PopScope` and `
WillPopScope`
to prevent closing the dialog.
-
Support for scroll to top when tapping status bar (iOS only)
-
Support for top SafeArea (not supported by showModalBottomSheet)
-
Cupertino modal bottom sheet
...
...
modal_bottom_sheet/example/ios/Flutter/AppFrameworkInfo.plist
View file @
a87f82b
...
...
@@ -21,6 +21,6 @@
<key>
CFBundleVersion
</key>
<string>
1.0
</string>
<key>
MinimumOSVersion
</key>
<string>
1
1
.0
</string>
<string>
1
2
.0
</string>
</dict>
</plist>
...
...
modal_bottom_sheet/example/ios/Podfile
View file @
a87f82b
# Uncomment this line to define a global platform for your project
# platform :ios, '1
1
.0'
# platform :ios, '1
2
.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV
[
'COCOAPODS_DISABLE_STATS'
]
=
'true'
...
...
modal_bottom_sheet/example/ios/Podfile.lock
View file @
a87f82b
...
...
@@ -14,9 +14,9 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
Flutter:
f04841e97a9d0b0a8025694d0796dd46242b2854
Flutter:
e0871f40cf51350855a761d2e70bf5af5b9b5de7
url_launcher_ios: 68d46cc9766d0c41dbdc884310529557e3cd7a86
PODFILE CHECKSUM:
ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
PODFILE CHECKSUM:
c4c93c5f6502fe2754f48404d3594bf779584011
COCOAPODS: 1.1
4.3
COCOAPODS: 1.1
5.2
...
...
modal_bottom_sheet/example/ios/Runner.xcodeproj/project.pbxproj
View file @
a87f82b
...
...
@@ -155,7 +155,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1
43
0;
LastUpgradeCheck = 1
51
0;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
...
...
@@ -342,7 +342,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 1
1
.0;
IPHONEOS_DEPLOYMENT_TARGET = 1
2
.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
...
...
@@ -420,7 +420,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 1
1
.0;
IPHONEOS_DEPLOYMENT_TARGET = 1
2
.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
...
...
@@ -469,7 +469,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 1
1
.0;
IPHONEOS_DEPLOYMENT_TARGET = 1
2
.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
...
...
modal_bottom_sheet/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
View file @
a87f82b
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion =
"1
43
0"
LastUpgradeVersion =
"1
51
0"
version =
"1.3"
>
<BuildAction
parallelizeBuildables =
"YES"
...
...
modal_bottom_sheet/example/lib/main.dart
View file @
a87f82b
...
...
@@ -208,8 +208,7 @@ class _MyHomePageState extends State<MyHomePage> {
builder:
(
context
)
=>
ModalWithNavigator
(),
)),
ListTile
(
title:
Text
(
'Cupertino Navigator + Scroll + WillPopScope'
),
title:
Text
(
'Cupertino Navigator + Scroll + PopScope'
),
onTap:
()
=>
showCupertinoModalBottomSheet
(
expand:
true
,
context:
context
,
...
...
@@ -218,7 +217,7 @@ class _MyHomePageState extends State<MyHomePage> {
),
),
ListTile
(
title:
Text
(
'Modal with
Will
PopScope'
),
title:
Text
(
'Modal with PopScope'
),
onTap:
()
=>
showCupertinoModalBottomSheet
(
expand:
true
,
context:
context
,
...
...
modal_bottom_sheet/example/lib/modals/modal_complex_all.dart
View file @
a87f82b
...
...
@@ -8,10 +8,13 @@ class ComplexModal extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Material
(
child:
WillPopScope
(
onWillPop:
()
async
{
bool
shouldClose
=
true
;
await
showCupertinoDialog
(
child:
PopScope
(
canPop:
false
,
onPopInvoked:
(
didPop
)
{
if
(!
didPop
)
{
final
sheetNavigator
=
Navigator
.
of
(
context
);
showCupertinoDialog
(
context:
context
,
builder:
(
context
)
=>
CupertinoAlertDialog
(
title:
Text
(
'Should Close?'
),
...
...
@@ -19,20 +22,19 @@ class ComplexModal extends StatelessWidget {
CupertinoButton
(
child:
Text
(
'Yes'
),
onPressed:
()
{
shouldClose
=
true
;
Navigator
.
of
(
context
).
pop
();
sheetNavigator
.
pop
();
},
),
CupertinoButton
(
child:
Text
(
'No'
),
onPressed:
()
{
shouldClose
=
false
;
Navigator
.
of
(
context
).
pop
();
},
),
],
));
return
shouldClose
;
}
},
child:
Navigator
(
onGenerateRoute:
(
_
)
=>
MaterialPageRoute
(
...
...
modal_bottom_sheet/example/lib/modals/modal_will_scope.dart
View file @
a87f82b
...
...
@@ -7,10 +7,12 @@ class ModalWillScope extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Material
(
child:
WillPopScope
(
onWillPop:
()
async
{
bool
shouldClose
=
true
;
await
showCupertinoDialog
(
child:
PopScope
(
canPop:
false
,
onPopInvoked:
(
didPop
)
{
if
(
didPop
)
return
;
final
sheetNavigator
=
Navigator
.
of
(
context
);
showCupertinoDialog
(
context:
context
,
builder:
(
context
)
=>
CupertinoAlertDialog
(
title:
Text
(
'Should Close?'
),
...
...
@@ -18,20 +20,19 @@ class ModalWillScope extends StatelessWidget {
CupertinoButton
(
child:
Text
(
'Yes'
),
onPressed:
()
{
shouldClose
=
true
;
Navigator
.
of
(
context
).
pop
();
},
),
CupertinoButton
(
child:
Text
(
'No'
),
onPressed:
()
{
shouldClose
=
false
;
Navigator
.
of
(
context
).
pop
();
sheetNavigator
.
pop
();
},
),
],
));
return
shouldClose
;
),
);
},
child:
CupertinoPageScaffold
(
navigationBar:
CupertinoNavigationBar
(
...
...
modal_bottom_sheet/example/pubspec.lock
View file @
a87f82b
...
...
@@ -72,6 +72,30 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "2.0.1"
lints:
dependency: "direct dev"
description:
...
...
@@ -84,41 +108,41 @@ packages:
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:
d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.1
0
.0"
version: "1.1
1
.0"
modal_bottom_sheet:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "3.0.
1
"
version: "3.0.
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
"
plugin_platform_interface:
dependency: transitive
description:
...
...
@@ -252,14 +276,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web
:
vm_service
:
dependency: transitive
description:
name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "
0.3
.0"
version: "
13.0
.0"
sdks:
dart: ">=3.
2.0-194.0.dev
<4.0.0"
dart: ">=3.
3.0
<4.0.0"
flutter: ">=3.13.0"
...
...
modal_bottom_sheet/lib/src/bottom_sheet_route.dart
View file @
a87f82b
...
...
@@ -96,10 +96,21 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
expanded:
widget
.
route
.
expanded
,
containerBuilder:
widget
.
route
.
containerBuilder
,
animationController:
widget
.
route
.
_animationController
!,
shouldClose:
widget
.
route
.
_hasScopedWillPopCallback
shouldClose:
widget
.
route
.
popDisposition
==
RoutePopDisposition
.
doNotPop
||
widget
.
route
.
_hasScopedWillPopCallback
?
()
async
{
// ignore: deprecated_member_use
final
willPop
=
await
widget
.
route
.
willPop
();
return
willPop
!=
RoutePopDisposition
.
doNotPop
;
final
popDisposition
=
widget
.
route
.
popDisposition
;
final
shouldClose
=
!(
willPop
==
RoutePopDisposition
.
doNotPop
||
popDisposition
==
RoutePopDisposition
.
doNotPop
);
popDisposition
==
RoutePopDisposition
.
doNotPop
;
if
(!
shouldClose
)
{
widget
.
route
.
onPopInvoked
(
false
);
}
return
shouldClose
;
}
:
null
,
onClosing:
()
{
...
...
sheet/example/ios/Flutter/AppFrameworkInfo.plist
View file @
a87f82b
...
...
@@ -21,6 +21,6 @@
<key>
CFBundleVersion
</key>
<string>
1.0
</string>
<key>
MinimumOSVersion
</key>
<string>
1
1
.0
</string>
<string>
1
2
.0
</string>
</dict>
</plist>
...
...
sheet/example/ios/Runner.xcodeproj/project.pbxproj
View file @
a87f82b
...
...
@@ -127,7 +127,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1
43
0;
LastUpgradeCheck = 1
51
0;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
...
...
@@ -275,7 +275,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 1
1
.0;
IPHONEOS_DEPLOYMENT_TARGET = 1
2
.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
...
...
@@ -361,7 +361,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 1
1
.0;
IPHONEOS_DEPLOYMENT_TARGET = 1
2
.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
...
...
@@ -410,7 +410,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 1
1
.0;
IPHONEOS_DEPLOYMENT_TARGET = 1
2
.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
...
...
sheet/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
View file @
a87f82b
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion =
"1
43
0"
LastUpgradeVersion =
"1
51
0"
version =
"1.3"
>
<BuildAction
parallelizeBuildables =
"YES"
...
...
sheet/example/lib/examples/route/examples/modal_complex_all.dart
View file @
a87f82b
...
...
@@ -9,10 +9,12 @@ class ComplexModal extends StatelessWidget {
final
ScrollController
primaryScrollController
=
PrimaryScrollController
.
maybeOf
(
context
)!;
return
Material
(
child:
WillPopScope
(
onWillPop:
()
async
{
bool
shouldClose
=
true
;
await
showCupertinoDialog
<
void
>(
child:
PopScope
(
canPop:
false
,
onPopInvoked:
(
didPop
)
{
final
sheetNavigator
=
Navigator
.
of
(
context
);
if
(!
didPop
)
{
showCupertinoDialog
<
void
>(
context:
context
,
builder:
(
BuildContext
context
)
=>
CupertinoAlertDialog
(
title:
const
Text
(
'Should Close?'
),
...
...
@@ -20,20 +22,19 @@ class ComplexModal extends StatelessWidget {
CupertinoButton
(
child:
const
Text
(
'Yes'
),
onPressed:
()
{
shouldClose
=
true
;
Navigator
.
of
(
context
).
pop
();
sheetNavigator
.
pop
();
},
),
CupertinoButton
(
child:
const
Text
(
'No'
),
onPressed:
()
{
shouldClose
=
false
;
Navigator
.
of
(
context
).
pop
();
},
),
],
));
return
shouldClose
;
}
},
child:
Navigator
(
onGenerateRoute:
(
_
)
=>
MaterialPageRoute
<
void
>(
...
...
sheet/example/lib/examples/route/examples/modal_fit_will_scope.dart
View file @
a87f82b
...
...
@@ -7,10 +7,12 @@ class ModalFitWillScope extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Material
(
child:
WillPopScope
(
onWillPop:
()
async
{
bool
shouldClose
=
true
;
await
showCupertinoDialog
<
void
>(
child:
PopScope
(
canPop:
false
,
onPopInvoked:
(
didPop
)
{
if
(
didPop
)
return
;
final
sheetNavigator
=
Navigator
.
of
(
context
);
showCupertinoDialog
<
void
>(
context:
context
,
builder:
(
BuildContext
context
)
=>
CupertinoAlertDialog
(
title:
const
Text
(
'Should Close?'
),
...
...
@@ -18,20 +20,18 @@ class ModalFitWillScope extends StatelessWidget {
CupertinoButton
(
child:
const
Text
(
'Yes'
),
onPressed:
()
{
shouldClose
=
true
;
Navigator
.
of
(
context
).
pop
();
sheetNavigator
.
pop
();
},
),
CupertinoButton
(
child:
const
Text
(
'No'
),
onPressed:
()
{
shouldClose
=
false
;
Navigator
.
of
(
context
).
pop
();
},
),
],
));
return
shouldClose
;
},
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
...
...
sheet/example/lib/examples/route/examples/modal_will_scope.dart
View file @
a87f82b
...
...
@@ -7,31 +7,35 @@ class ModalWillScope extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
Material
(
child:
WillPopScope
(
onWillPop:
()
async
{
bool
shouldClose
=
true
;
await
showCupertinoDialog
<
void
>(
child:
PopScope
(
canPop:
false
,
onPopInvoked:
(
didPop
)
async
{
if
(
didPop
)
{
return
;
}
final
sheetNavigator
=
Navigator
.
of
(
context
);
showCupertinoDialog
<
void
>(
context:
context
,
builder:
(
BuildContext
context
)
=>
CupertinoAlertDialog
(
builder:
(
BuildContext
context
)
{
return
CupertinoAlertDialog
(
title:
const
Text
(
'Should Close?'
),
actions:
<
Widget
>[
CupertinoButton
(
child:
const
Text
(
'Yes'
),
onPressed:
()
{
shouldClose
=
true
;
Navigator
.
of
(
context
).
pop
();
sheetNavigator
.
pop
();
},
),
CupertinoButton
(
child:
const
Text
(
'No'
),
onPressed:
()
{
shouldClose
=
false
;
Navigator
.
of
(
context
).
pop
();
},
),
],
));
return
shouldClose
;
);
});
},
child:
CupertinoPageScaffold
(
navigationBar:
CupertinoNavigationBar
(
...
...
sheet/example/lib/examples/sheet/fold_screen_sheet.dart
View file @
a87f82b
sheet/example/lib/examples/sheet/sheet_without_momentum.dart
View file @
a87f82b
sheet/example/lib/examples/sheet/snap_sheet.dart
View file @
a87f82b
sheet/example/lib/examples/sheet/text_field.dart
View file @
a87f82b
sheet/example/lib/route_example_page.dart
View file @
a87f82b
...
...
@@ -234,8 +234,8 @@ class RouteExamplePage extends StatelessWidget {
),
),
ListTile
(
title:
const
Text
(
'Cupertino Navigator + Scroll + WillPopScope'
),
title:
const
Text
(
'Cupertino Navigator + Scroll + PopScope'
),
onTap:
()
=>
Navigator
.
of
(
context
).
push
(
CupertinoSheetRoute
<
void
>(
builder:
(
BuildContext
context
)
=>
...
...
@@ -244,7 +244,7 @@ class RouteExamplePage extends StatelessWidget {
),
),
ListTile
(
title:
const
Text
(
'Modal with
Will
PopScope'
),
title:
const
Text
(
'Modal with PopScope'
),
onTap:
()
=>
Navigator
.
of
(
context
).
push
(
CupertinoSheetRoute
<
void
>(
builder:
(
BuildContext
context
)
=>
...
...
@@ -253,7 +253,7 @@ class RouteExamplePage extends StatelessWidget {
),
),
ListTile
(
title:
const
Text
(
'Modal Fit with
Will
PopScope'
),
title:
const
Text
(
'Modal Fit with PopScope'
),
onTap:
()
=>
Navigator
.
of
(
context
).
push
(
CupertinoSheetRoute
<
void
>(
fit:
SheetFit
.
loose
,
...
...
sheet/example/pubspec.lock
View file @
a87f82b
...
...
@@ -37,10 +37,10 @@ packages:
dependency: "direct main"
description:
name: collection
sha256:
f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
sha256:
ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
version: "1.1
7.2
"
version: "1.1
8.0
"
cupertino_icons:
dependency: "direct main"
description:
...
...
@@ -88,6 +88,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "12.1.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "2.0.1"
lints:
dependency: "direct dev"
description:
...
...
@@ -108,26 +132,26 @@ packages:
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:
"3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
sha256:
d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.
9.1
"
version: "1.
11.0
"
nested:
dependency: transitive
description:
...
...
@@ -140,10 +164,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "
8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917
"
sha256: "
087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af
"
url: "https://pub.dev"
source: hosted
version: "1.
8.3
"
version: "1.
9.0
"
provider:
dependency: "direct main"
description:
...
...
@@ -158,7 +182,7 @@ packages:
path: ".."
relative: true
source: path
version: "1.0.0
-pre
"
version: "1.0.0"
sky_engine:
dependency: transitive
description: flutter
...
...
@@ -176,18 +200,18 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256:
c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
sha256:
"73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
version: "1.11.
0
"
version: "1.11.
1
"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256:
"83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
sha256:
ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
version: "2.1.
1
"
version: "2.1.
2
"
string_scanner:
dependency: transitive
description:
...
...
@@ -208,10 +232,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "
75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8
"
sha256: "
5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b
"
url: "https://pub.dev"
source: hosted
version: "0.6.
0
"
version: "0.6.
1
"
vector_math:
dependency: transitive
description:
...
...
@@ -220,14 +244,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web
:
vm_service
:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "
0.1.4-beta
"
version: "
13.0.0
"
sdks:
dart: ">=3.
1.0-185.0.dev
<4.0.0"
dart: ">=3.
3.0
<4.0.0"
flutter: ">=3.7.0"
...
...
sheet/example/pubspec.yaml
View file @
a87f82b
...
...
@@ -4,7 +4,7 @@ publish_to: 'none'
version
:
1.0.0+1
environment
:
sdk
:
"
>=3.
19
.0
<4.0.0"
sdk
:
"
>=3.
3
.0
<4.0.0"
dependencies
:
flutter
:
...
...
sheet/lib/src/route/sheet_route.dart
View file @
a87f82b
...
...
@@ -182,7 +182,8 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> {
@protected
bool
shouldPreventPopForExtent
(
double
extent
)
{
return
extent
<
willPopThreshold
&&
hasScopedWillPopCallback
&&
(
hasScopedWillPopCallback
||
popDisposition
==
RoutePopDisposition
.
doNotPop
)
&&
controller
!.
velocity
<=
0
;
}
...
...
@@ -466,7 +467,10 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
duration:
const
Duration
(
milliseconds:
400
),
curve:
Curves
.
easeInOut
,
);
if
(
route
.
popDisposition
==
RoutePopDisposition
.
doNotPop
)
{
_sheetController
.
position
.
stopPreventingDrag
();
route
.
onPopInvoked
(
false
);
}
else
{
route
.
willPop
().
then
(
(
RoutePopDisposition
disposition
)
{
if
(
disposition
==
RoutePopDisposition
.
pop
)
{
...
...
@@ -481,6 +485,7 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
},
);
}
}
@override
Widget
build
(
BuildContext
context
)
{
...
...
Please
register
or
login
to post a comment