Jaime Blasco
Committed by GitHub

feat: sheet improvements (#355)

* feat: sheet improvements

* fix: remove unused simulation

* fix: rebase

* fix: update dependencies
Showing 35 changed files with 478 additions and 423 deletions
@@ -21,6 +21,6 @@ @@ -21,6 +21,6 @@
21 <key>CFBundleVersion</key> 21 <key>CFBundleVersion</key>
22 <string>1.0</string> 22 <string>1.0</string>
23 <key>MinimumOSVersion</key> 23 <key>MinimumOSVersion</key>
24 - <string>9.0</string> 24 + <string>11.0</string>
25 </dict> 25 </dict>
26 </plist> 26 </plist>
1 # Uncomment this line to define a global platform for your project 1 # Uncomment this line to define a global platform for your project
2 -# platform :ios, '9.0' 2 +# platform :ios, '11.0'
3 3
4 # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 4 # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 ENV['COCOAPODS_DISABLE_STATS'] = 'true' 5 ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -14,9 +14,9 @@ EXTERNAL SOURCES: @@ -14,9 +14,9 @@ EXTERNAL SOURCES:
14 :path: ".symlinks/plugins/url_launcher_ios/ios" 14 :path: ".symlinks/plugins/url_launcher_ios/ios"
15 15
16 SPEC CHECKSUMS: 16 SPEC CHECKSUMS:
17 - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a  
18 - url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de 17 + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
  18 + url_launcher_ios: ae1517e5e344f5544fb090b079e11f399dfbe4d2
19 19
20 -PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c 20 +PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
21 21
22 -COCOAPODS: 1.11.3 22 +COCOAPODS: 1.13.0
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 - objectVersion = 50; 6 + objectVersion = 54;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
@@ -113,7 +113,6 @@ @@ -113,7 +113,6 @@
113 9E13656F8C2A211F9F4C04EF /* Pods-Runner.release.xcconfig */, 113 9E13656F8C2A211F9F4C04EF /* Pods-Runner.release.xcconfig */,
114 C33049C8773181A0B4BCD4EE /* Pods-Runner.profile.xcconfig */, 114 C33049C8773181A0B4BCD4EE /* Pods-Runner.profile.xcconfig */,
115 ); 115 );
116 - name = Pods;  
117 path = Pods; 116 path = Pods;
118 sourceTree = "<group>"; 117 sourceTree = "<group>";
119 }; 118 };
@@ -156,7 +155,7 @@ @@ -156,7 +155,7 @@
156 97C146E61CF9000F007C117D /* Project object */ = { 155 97C146E61CF9000F007C117D /* Project object */ = {
157 isa = PBXProject; 156 isa = PBXProject;
158 attributes = { 157 attributes = {
159 - LastUpgradeCheck = 1300; 158 + LastUpgradeCheck = 1430;
160 ORGANIZATIONNAME = ""; 159 ORGANIZATIONNAME = "";
161 TargetAttributes = { 160 TargetAttributes = {
162 97C146ED1CF9000F007C117D = { 161 97C146ED1CF9000F007C117D = {
@@ -200,10 +199,12 @@ @@ -200,10 +199,12 @@
200 /* Begin PBXShellScriptBuildPhase section */ 199 /* Begin PBXShellScriptBuildPhase section */
201 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 200 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
202 isa = PBXShellScriptBuildPhase; 201 isa = PBXShellScriptBuildPhase;
  202 + alwaysOutOfDate = 1;
203 buildActionMask = 2147483647; 203 buildActionMask = 2147483647;
204 files = ( 204 files = (
205 ); 205 );
206 inputPaths = ( 206 inputPaths = (
  207 + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
207 ); 208 );
208 name = "Thin Binary"; 209 name = "Thin Binary";
209 outputPaths = ( 210 outputPaths = (
@@ -214,6 +215,7 @@ @@ -214,6 +215,7 @@
214 }; 215 };
215 9740EEB61CF901F6004384FC /* Run Script */ = { 216 9740EEB61CF901F6004384FC /* Run Script */ = {
216 isa = PBXShellScriptBuildPhase; 217 isa = PBXShellScriptBuildPhase;
  218 + alwaysOutOfDate = 1;
217 buildActionMask = 2147483647; 219 buildActionMask = 2147483647;
218 files = ( 220 files = (
219 ); 221 );
@@ -340,7 +342,7 @@ @@ -340,7 +342,7 @@
340 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 342 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
341 GCC_WARN_UNUSED_FUNCTION = YES; 343 GCC_WARN_UNUSED_FUNCTION = YES;
342 GCC_WARN_UNUSED_VARIABLE = YES; 344 GCC_WARN_UNUSED_VARIABLE = YES;
343 - IPHONEOS_DEPLOYMENT_TARGET = 9.0; 345 + IPHONEOS_DEPLOYMENT_TARGET = 11.0;
344 MTL_ENABLE_DEBUG_INFO = NO; 346 MTL_ENABLE_DEBUG_INFO = NO;
345 SDKROOT = iphoneos; 347 SDKROOT = iphoneos;
346 SUPPORTED_PLATFORMS = iphoneos; 348 SUPPORTED_PLATFORMS = iphoneos;
@@ -356,6 +358,7 @@ @@ -356,6 +358,7 @@
356 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 358 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
357 CLANG_ENABLE_MODULES = YES; 359 CLANG_ENABLE_MODULES = YES;
358 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 360 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  361 + DEVELOPMENT_TEAM = 87RQQPQ85J;
359 ENABLE_BITCODE = NO; 362 ENABLE_BITCODE = NO;
360 INFOPLIST_FILE = Runner/Info.plist; 363 INFOPLIST_FILE = Runner/Info.plist;
361 LD_RUNPATH_SEARCH_PATHS = ( 364 LD_RUNPATH_SEARCH_PATHS = (
@@ -417,7 +420,7 @@ @@ -417,7 +420,7 @@
417 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 420 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
418 GCC_WARN_UNUSED_FUNCTION = YES; 421 GCC_WARN_UNUSED_FUNCTION = YES;
419 GCC_WARN_UNUSED_VARIABLE = YES; 422 GCC_WARN_UNUSED_VARIABLE = YES;
420 - IPHONEOS_DEPLOYMENT_TARGET = 9.0; 423 + IPHONEOS_DEPLOYMENT_TARGET = 11.0;
421 MTL_ENABLE_DEBUG_INFO = YES; 424 MTL_ENABLE_DEBUG_INFO = YES;
422 ONLY_ACTIVE_ARCH = YES; 425 ONLY_ACTIVE_ARCH = YES;
423 SDKROOT = iphoneos; 426 SDKROOT = iphoneos;
@@ -466,7 +469,7 @@ @@ -466,7 +469,7 @@
466 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 469 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
467 GCC_WARN_UNUSED_FUNCTION = YES; 470 GCC_WARN_UNUSED_FUNCTION = YES;
468 GCC_WARN_UNUSED_VARIABLE = YES; 471 GCC_WARN_UNUSED_VARIABLE = YES;
469 - IPHONEOS_DEPLOYMENT_TARGET = 9.0; 472 + IPHONEOS_DEPLOYMENT_TARGET = 11.0;
470 MTL_ENABLE_DEBUG_INFO = NO; 473 MTL_ENABLE_DEBUG_INFO = NO;
471 SDKROOT = iphoneos; 474 SDKROOT = iphoneos;
472 SUPPORTED_PLATFORMS = iphoneos; 475 SUPPORTED_PLATFORMS = iphoneos;
@@ -483,6 +486,7 @@ @@ -483,6 +486,7 @@
483 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 486 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
484 CLANG_ENABLE_MODULES = YES; 487 CLANG_ENABLE_MODULES = YES;
485 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 488 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  489 + DEVELOPMENT_TEAM = 87RQQPQ85J;
486 ENABLE_BITCODE = NO; 490 ENABLE_BITCODE = NO;
487 INFOPLIST_FILE = Runner/Info.plist; 491 INFOPLIST_FILE = Runner/Info.plist;
488 LD_RUNPATH_SEARCH_PATHS = ( 492 LD_RUNPATH_SEARCH_PATHS = (
@@ -505,6 +509,7 @@ @@ -505,6 +509,7 @@
505 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 509 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
506 CLANG_ENABLE_MODULES = YES; 510 CLANG_ENABLE_MODULES = YES;
507 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 511 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  512 + DEVELOPMENT_TEAM = 87RQQPQ85J;
508 ENABLE_BITCODE = NO; 513 ENABLE_BITCODE = NO;
509 INFOPLIST_FILE = Runner/Info.plist; 514 INFOPLIST_FILE = Runner/Info.plist;
510 LD_RUNPATH_SEARCH_PATHS = ( 515 LD_RUNPATH_SEARCH_PATHS = (
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <Scheme 2 <Scheme
3 - LastUpgradeVersion = "1300" 3 + LastUpgradeVersion = "1430"
4 version = "1.3"> 4 version = "1.3">
5 <BuildAction 5 <BuildAction
6 parallelizeBuildables = "YES" 6 parallelizeBuildables = "YES"
@@ -43,5 +43,7 @@ @@ -43,5 +43,7 @@
43 <false/> 43 <false/>
44 <key>CADisableMinimumFrameDurationOnPhone</key> 44 <key>CADisableMinimumFrameDurationOnPhone</key>
45 <true/> 45 <true/>
  46 + <key>UIApplicationSupportsIndirectInputEvents</key>
  47 + <true/>
46 </dict> 48 </dict>
47 </plist> 49 </plist>
@@ -5,10 +5,10 @@ packages: @@ -5,10 +5,10 @@ packages:
5 dependency: transitive 5 dependency: transitive
6 description: 6 description:
7 name: async 7 name: async
8 - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 8 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
9 url: "https://pub.dev" 9 url: "https://pub.dev"
10 source: hosted 10 source: hosted
11 - version: "2.10.0" 11 + version: "2.11.0"
12 boolean_selector: 12 boolean_selector:
13 dependency: transitive 13 dependency: transitive
14 description: 14 description:
@@ -21,10 +21,10 @@ packages: @@ -21,10 +21,10 @@ packages:
21 dependency: transitive 21 dependency: transitive
22 description: 22 description:
23 name: characters 23 name: characters
24 - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c 24 + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
25 url: "https://pub.dev" 25 url: "https://pub.dev"
26 source: hosted 26 source: hosted
27 - version: "1.2.1" 27 + version: "1.3.0"
28 clock: 28 clock:
29 dependency: transitive 29 dependency: transitive
30 description: 30 description:
@@ -37,18 +37,18 @@ packages: @@ -37,18 +37,18 @@ packages:
37 dependency: transitive 37 dependency: transitive
38 description: 38 description:
39 name: collection 39 name: collection
40 - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 40 + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
41 url: "https://pub.dev" 41 url: "https://pub.dev"
42 source: hosted 42 source: hosted
43 - version: "1.17.0" 43 + version: "1.17.2"
44 cupertino_icons: 44 cupertino_icons:
45 dependency: "direct main" 45 dependency: "direct main"
46 description: 46 description:
47 name: cupertino_icons 47 name: cupertino_icons
48 - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be 48 + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
49 url: "https://pub.dev" 49 url: "https://pub.dev"
50 source: hosted 50 source: hosted
51 - version: "1.0.5" 51 + version: "1.0.6"
52 fake_async: 52 fake_async:
53 dependency: transitive 53 dependency: transitive
54 description: 54 description:
@@ -72,61 +72,53 @@ packages: @@ -72,61 +72,53 @@ packages:
72 description: flutter 72 description: flutter
73 source: sdk 73 source: sdk
74 version: "0.0.0" 74 version: "0.0.0"
75 - js:  
76 - dependency: transitive  
77 - description:  
78 - name: js  
79 - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"  
80 - url: "https://pub.dev"  
81 - source: hosted  
82 - version: "0.6.5"  
83 matcher: 75 matcher:
84 dependency: transitive 76 dependency: transitive
85 description: 77 description:
86 name: matcher 78 name: matcher
87 - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" 79 + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
88 url: "https://pub.dev" 80 url: "https://pub.dev"
89 source: hosted 81 source: hosted
90 - version: "0.12.13" 82 + version: "0.12.16"
91 material_color_utilities: 83 material_color_utilities:
92 dependency: transitive 84 dependency: transitive
93 description: 85 description:
94 name: material_color_utilities 86 name: material_color_utilities
95 - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 87 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
96 url: "https://pub.dev" 88 url: "https://pub.dev"
97 source: hosted 89 source: hosted
98 - version: "0.2.0" 90 + version: "0.5.0"
99 meta: 91 meta:
100 dependency: transitive 92 dependency: transitive
101 description: 93 description:
102 name: meta 94 name: meta
103 - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" 95 + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
104 url: "https://pub.dev" 96 url: "https://pub.dev"
105 source: hosted 97 source: hosted
106 - version: "1.8.0" 98 + version: "1.9.1"
107 modal_bottom_sheet: 99 modal_bottom_sheet:
108 dependency: "direct main" 100 dependency: "direct main"
109 description: 101 description:
110 path: ".." 102 path: ".."
111 relative: true 103 relative: true
112 source: path 104 source: path
113 - version: "2.1.2" 105 + version: "3.0.1"
114 path: 106 path:
115 dependency: transitive 107 dependency: transitive
116 description: 108 description:
117 name: path 109 name: path
118 - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b 110 + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
119 url: "https://pub.dev" 111 url: "https://pub.dev"
120 source: hosted 112 source: hosted
121 - version: "1.8.2" 113 + version: "1.8.3"
122 plugin_platform_interface: 114 plugin_platform_interface:
123 dependency: transitive 115 dependency: transitive
124 description: 116 description:
125 name: plugin_platform_interface 117 name: plugin_platform_interface
126 - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a 118 + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d
127 url: "https://pub.dev" 119 url: "https://pub.dev"
128 source: hosted 120 source: hosted
129 - version: "2.1.3" 121 + version: "2.1.6"
130 sky_engine: 122 sky_engine:
131 dependency: transitive 123 dependency: transitive
132 description: flutter 124 description: flutter
@@ -136,10 +128,10 @@ packages: @@ -136,10 +128,10 @@ packages:
136 dependency: transitive 128 dependency: transitive
137 description: 129 description:
138 name: source_span 130 name: source_span
139 - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 131 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
140 url: "https://pub.dev" 132 url: "https://pub.dev"
141 source: hosted 133 source: hosted
142 - version: "1.9.1" 134 + version: "1.10.0"
143 stack_trace: 135 stack_trace:
144 dependency: transitive 136 dependency: transitive
145 description: 137 description:
@@ -176,74 +168,74 @@ packages: @@ -176,74 +168,74 @@ packages:
176 dependency: transitive 168 dependency: transitive
177 description: 169 description:
178 name: test_api 170 name: test_api
179 - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 171 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
180 url: "https://pub.dev" 172 url: "https://pub.dev"
181 source: hosted 173 source: hosted
182 - version: "0.4.16" 174 + version: "0.6.0"
183 url_launcher: 175 url_launcher:
184 dependency: "direct main" 176 dependency: "direct main"
185 description: 177 description:
186 name: url_launcher 178 name: url_launcher
187 - sha256: "698fa0b4392effdc73e9e184403b627362eb5fbf904483ac9defbb1c2191d809" 179 + sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba
188 url: "https://pub.dev" 180 url: "https://pub.dev"
189 source: hosted 181 source: hosted
190 - version: "6.1.8" 182 + version: "6.2.1"
191 url_launcher_android: 183 url_launcher_android:
192 dependency: transitive 184 dependency: transitive
193 description: 185 description:
194 name: url_launcher_android 186 name: url_launcher_android
195 - sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" 187 + sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def"
196 url: "https://pub.dev" 188 url: "https://pub.dev"
197 source: hosted 189 source: hosted
198 - version: "6.0.23" 190 + version: "6.2.0"
199 url_launcher_ios: 191 url_launcher_ios:
200 dependency: transitive 192 dependency: transitive
201 description: 193 description:
202 name: url_launcher_ios 194 name: url_launcher_ios
203 - sha256: bb328b24d3bccc20bdf1024a0990ac4f869d57663660de9c936fb8c043edefe3 195 + sha256: "4ac97281cf60e2e8c5cc703b2b28528f9b50c8f7cebc71df6bdf0845f647268a"
204 url: "https://pub.dev" 196 url: "https://pub.dev"
205 source: hosted 197 source: hosted
206 - version: "6.0.18" 198 + version: "6.2.0"
207 url_launcher_linux: 199 url_launcher_linux:
208 dependency: transitive 200 dependency: transitive
209 description: 201 description:
210 name: url_launcher_linux 202 name: url_launcher_linux
211 - sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" 203 + sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd"
212 url: "https://pub.dev" 204 url: "https://pub.dev"
213 source: hosted 205 source: hosted
214 - version: "3.0.2" 206 + version: "3.1.0"
215 url_launcher_macos: 207 url_launcher_macos:
216 dependency: transitive 208 dependency: transitive
217 description: 209 description:
218 name: url_launcher_macos 210 name: url_launcher_macos
219 - sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" 211 + sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234
220 url: "https://pub.dev" 212 url: "https://pub.dev"
221 source: hosted 213 source: hosted
222 - version: "3.0.2" 214 + version: "3.1.0"
223 url_launcher_platform_interface: 215 url_launcher_platform_interface:
224 dependency: transitive 216 dependency: transitive
225 description: 217 description:
226 name: url_launcher_platform_interface 218 name: url_launcher_platform_interface
227 - sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" 219 + sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50"
228 url: "https://pub.dev" 220 url: "https://pub.dev"
229 source: hosted 221 source: hosted
230 - version: "2.1.1" 222 + version: "2.2.0"
231 url_launcher_web: 223 url_launcher_web:
232 dependency: transitive 224 dependency: transitive
233 description: 225 description:
234 name: url_launcher_web 226 name: url_launcher_web
235 - sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" 227 + sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2"
236 url: "https://pub.dev" 228 url: "https://pub.dev"
237 source: hosted 229 source: hosted
238 - version: "2.0.14" 230 + version: "2.2.0"
239 url_launcher_windows: 231 url_launcher_windows:
240 dependency: transitive 232 dependency: transitive
241 description: 233 description:
242 name: url_launcher_windows 234 name: url_launcher_windows
243 - sha256: "387e227c4b979034cc52afb11d66b04ed9b288ca1f45beeef39b2ea69e714fa5" 235 + sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc"
244 url: "https://pub.dev" 236 url: "https://pub.dev"
245 source: hosted 237 source: hosted
246 - version: "3.0.2" 238 + version: "3.1.0"
247 vector_math: 239 vector_math:
248 dependency: transitive 240 dependency: transitive
249 description: 241 description:
@@ -252,6 +244,14 @@ packages: @@ -252,6 +244,14 @@ packages:
252 url: "https://pub.dev" 244 url: "https://pub.dev"
253 source: hosted 245 source: hosted
254 version: "2.1.4" 246 version: "2.1.4"
  247 + web:
  248 + dependency: transitive
  249 + description:
  250 + name: web
  251 + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
  252 + url: "https://pub.dev"
  253 + source: hosted
  254 + version: "0.1.4-beta"
255 sdks: 255 sdks:
256 - dart: ">=2.18.0 <4.0.0"  
257 - flutter: ">=3.7.0" 256 + dart: ">=3.1.0 <4.0.0"
  257 + flutter: ">=3.13.0"
1 import 'dart:async'; 1 import 'dart:async';
2 2
3 -import 'package:flutter/material.dart' hide ModalBottomSheetRoute; 3 +import 'package:flutter/material.dart';
4 import 'package:flutter/services.dart'; 4 import 'package:flutter/services.dart';
  5 +import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
5 6
6 const Radius kDefaultBarTopRadius = Radius.circular(15); 7 const Radius kDefaultBarTopRadius = Radius.circular(15);
7 8
@@ -96,7 +97,7 @@ Future<T?> showBarModalBottomSheet<T>({ @@ -96,7 +97,7 @@ Future<T?> showBarModalBottomSheet<T>({
96 assert(debugCheckHasMediaQuery(context)); 97 assert(debugCheckHasMediaQuery(context));
97 assert(debugCheckHasMaterialLocalizations(context)); 98 assert(debugCheckHasMaterialLocalizations(context));
98 final result = await Navigator.of(context, rootNavigator: useRootNavigator) 99 final result = await Navigator.of(context, rootNavigator: useRootNavigator)
99 - .push(ModalBottomSheetRoute<T>( 100 + .push(ModalSheetRoute<T>(
100 builder: builder, 101 builder: builder,
101 bounce: bounce, 102 bounce: bounce,
102 closeProgressThreshold: closeProgressThreshold, 103 closeProgressThreshold: closeProgressThreshold,
@@ -26,7 +26,7 @@ Future<T?> showMaterialModalBottomSheet<T>({ @@ -26,7 +26,7 @@ Future<T?> showMaterialModalBottomSheet<T>({
26 assert(debugCheckHasMediaQuery(context)); 26 assert(debugCheckHasMediaQuery(context));
27 assert(debugCheckHasMaterialLocalizations(context)); 27 assert(debugCheckHasMaterialLocalizations(context));
28 final result = await Navigator.of(context, rootNavigator: useRootNavigator) 28 final result = await Navigator.of(context, rootNavigator: useRootNavigator)
29 - .push(ModalBottomSheetRoute<T>( 29 + .push(ModalSheetRoute<T>(
30 builder: builder, 30 builder: builder,
31 closeProgressThreshold: closeProgressThreshold, 31 closeProgressThreshold: closeProgressThreshold,
32 containerBuilder: _materialContainerBuilder( 32 containerBuilder: _materialContainerBuilder(
@@ -20,7 +20,7 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> { @@ -20,7 +20,7 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> {
20 builder: builder, 20 builder: builder,
21 maintainState: maintainState); 21 maintainState: maintainState);
22 22
23 - ModalBottomSheetRoute? _nextModalRoute; 23 + ModalSheetRoute? _nextModalRoute;
24 24
25 @override 25 @override
26 bool canTransitionTo(TransitionRoute<dynamic> nextRoute) { 26 bool canTransitionTo(TransitionRoute<dynamic> nextRoute) {
@@ -29,12 +29,12 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> { @@ -29,12 +29,12 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> {
29 (nextRoute is CupertinoPageRoute && !nextRoute.fullscreenDialog) || 29 (nextRoute is CupertinoPageRoute && !nextRoute.fullscreenDialog) ||
30 (nextRoute is MaterialWithModalsPageRoute && 30 (nextRoute is MaterialWithModalsPageRoute &&
31 !nextRoute.fullscreenDialog) || 31 !nextRoute.fullscreenDialog) ||
32 - (nextRoute is ModalBottomSheetRoute); 32 + (nextRoute is ModalSheetRoute);
33 } 33 }
34 34
35 @override 35 @override
36 void didChangeNext(Route? nextRoute) { 36 void didChangeNext(Route? nextRoute) {
37 - if (nextRoute is ModalBottomSheetRoute) { 37 + if (nextRoute is ModalSheetRoute) {
38 _nextModalRoute = nextRoute; 38 _nextModalRoute = nextRoute;
39 } 39 }
40 40
@@ -42,11 +42,6 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> { @@ -42,11 +42,6 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> {
42 } 42 }
43 43
44 @override 44 @override
45 - void didPopNext(Route nextRoute) {  
46 - super.didPopNext(nextRoute);  
47 - }  
48 -  
49 - @override  
50 bool didPop(T? result) { 45 bool didPop(T? result) {
51 _nextModalRoute = null; 46 _nextModalRoute = null;
52 return super.didPop(result); 47 return super.didPop(result);
@@ -5,10 +5,10 @@ packages: @@ -5,10 +5,10 @@ packages:
5 dependency: transitive 5 dependency: transitive
6 description: 6 description:
7 name: async 7 name: async
8 - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 8 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
9 url: "https://pub.dev" 9 url: "https://pub.dev"
10 source: hosted 10 source: hosted
11 - version: "2.10.0" 11 + version: "2.11.0"
12 boolean_selector: 12 boolean_selector:
13 dependency: transitive 13 dependency: transitive
14 description: 14 description:
@@ -21,10 +21,10 @@ packages: @@ -21,10 +21,10 @@ packages:
21 dependency: transitive 21 dependency: transitive
22 description: 22 description:
23 name: characters 23 name: characters
24 - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c 24 + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
25 url: "https://pub.dev" 25 url: "https://pub.dev"
26 source: hosted 26 source: hosted
27 - version: "1.2.1" 27 + version: "1.3.0"
28 clock: 28 clock:
29 dependency: transitive 29 dependency: transitive
30 description: 30 description:
@@ -37,10 +37,10 @@ packages: @@ -37,10 +37,10 @@ packages:
37 dependency: transitive 37 dependency: transitive
38 description: 38 description:
39 name: collection 39 name: collection
40 - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 40 + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
41 url: "https://pub.dev" 41 url: "https://pub.dev"
42 source: hosted 42 source: hosted
43 - version: "1.17.0" 43 + version: "1.17.2"
44 fake_async: 44 fake_async:
45 dependency: transitive 45 dependency: transitive
46 description: 46 description:
@@ -59,54 +59,46 @@ packages: @@ -59,54 +59,46 @@ packages:
59 description: flutter 59 description: flutter
60 source: sdk 60 source: sdk
61 version: "0.0.0" 61 version: "0.0.0"
62 - js:  
63 - dependency: transitive  
64 - description:  
65 - name: js  
66 - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"  
67 - url: "https://pub.dev"  
68 - source: hosted  
69 - version: "0.6.5"  
70 lints: 62 lints:
71 dependency: "direct dev" 63 dependency: "direct dev"
72 description: 64 description:
73 name: lints 65 name: lints
74 - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" 66 + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
75 url: "https://pub.dev" 67 url: "https://pub.dev"
76 source: hosted 68 source: hosted
77 - version: "2.0.1" 69 + version: "2.1.1"
78 matcher: 70 matcher:
79 dependency: transitive 71 dependency: transitive
80 description: 72 description:
81 name: matcher 73 name: matcher
82 - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" 74 + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
83 url: "https://pub.dev" 75 url: "https://pub.dev"
84 source: hosted 76 source: hosted
85 - version: "0.12.13" 77 + version: "0.12.16"
86 material_color_utilities: 78 material_color_utilities:
87 dependency: transitive 79 dependency: transitive
88 description: 80 description:
89 name: material_color_utilities 81 name: material_color_utilities
90 - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 82 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
91 url: "https://pub.dev" 83 url: "https://pub.dev"
92 source: hosted 84 source: hosted
93 - version: "0.2.0" 85 + version: "0.5.0"
94 meta: 86 meta:
95 dependency: transitive 87 dependency: transitive
96 description: 88 description:
97 name: meta 89 name: meta
98 - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" 90 + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
99 url: "https://pub.dev" 91 url: "https://pub.dev"
100 source: hosted 92 source: hosted
101 - version: "1.8.0" 93 + version: "1.9.1"
102 path: 94 path:
103 dependency: transitive 95 dependency: transitive
104 description: 96 description:
105 name: path 97 name: path
106 - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b 98 + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
107 url: "https://pub.dev" 99 url: "https://pub.dev"
108 source: hosted 100 source: hosted
109 - version: "1.8.2" 101 + version: "1.8.3"
110 sky_engine: 102 sky_engine:
111 dependency: transitive 103 dependency: transitive
112 description: flutter 104 description: flutter
@@ -116,10 +108,10 @@ packages: @@ -116,10 +108,10 @@ packages:
116 dependency: transitive 108 dependency: transitive
117 description: 109 description:
118 name: source_span 110 name: source_span
119 - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 111 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
120 url: "https://pub.dev" 112 url: "https://pub.dev"
121 source: hosted 113 source: hosted
122 - version: "1.9.1" 114 + version: "1.10.0"
123 stack_trace: 115 stack_trace:
124 dependency: transitive 116 dependency: transitive
125 description: 117 description:
@@ -156,10 +148,10 @@ packages: @@ -156,10 +148,10 @@ packages:
156 dependency: transitive 148 dependency: transitive
157 description: 149 description:
158 name: test_api 150 name: test_api
159 - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 151 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
160 url: "https://pub.dev" 152 url: "https://pub.dev"
161 source: hosted 153 source: hosted
162 - version: "0.4.16" 154 + version: "0.6.0"
163 vector_math: 155 vector_math:
164 dependency: transitive 156 dependency: transitive
165 description: 157 description:
@@ -168,6 +160,13 @@ packages: @@ -168,6 +160,13 @@ packages:
168 url: "https://pub.dev" 160 url: "https://pub.dev"
169 source: hosted 161 source: hosted
170 version: "2.1.4" 162 version: "2.1.4"
  163 + web:
  164 + dependency: transitive
  165 + description:
  166 + name: web
  167 + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
  168 + url: "https://pub.dev"
  169 + source: hosted
  170 + version: "0.1.4-beta"
171 sdks: 171 sdks:
172 - dart: ">=2.18.0 <4.0.0"  
173 - flutter: ">=3.7.0" 172 + dart: ">=3.1.0-185.0.dev <4.0.0"
1 name: modal_bottom_sheet 1 name: modal_bottom_sheet
2 description: 'Create awesome and powerful modal bottom sheets. Material, Cupertino iOS 13 or create your own style' 2 description: 'Create awesome and powerful modal bottom sheets. Material, Cupertino iOS 13 or create your own style'
3 -version: 3.0.0-pre 3 +version: 3.0.1
4 homepage: 'https://github.com/jamesblasco/modal_bottom_sheet' 4 homepage: 'https://github.com/jamesblasco/modal_bottom_sheet'
5 5
6 environment: 6 environment:
7 sdk: ">=2.17.0 <3.0.0" 7 sdk: ">=2.17.0 <3.0.0"
8 - flutter: ">=3.7.0"  
9 8
10 dependencies: 9 dependencies:
11 flutter: 10 flutter:
@@ -47,7 +47,7 @@ Stack( @@ -47,7 +47,7 @@ Stack(
47 ``` 47 ```
48 48
49 49
50 -The widget has several parameters that allow fully costumization of the sheet 50 +The widget has several parameters that allow fully customization of the sheet
51 51
52 #### Add an initial position 52 #### Add an initial position
53 53
@@ -60,7 +60,7 @@ Sheet( @@ -60,7 +60,7 @@ Sheet(
60 ) 60 )
61 ``` 61 ```
62 62
63 -#### Clamp the sheet between a min and maximun values 63 +#### Clamp the sheet between a min and maximum values
64 64
65 You can set a `minExtent` and `maxExtent` to limit the position of the Sheet between those values 65 You can set a `minExtent` and `maxExtent` to limit the position of the Sheet between those values
66 66
@@ -89,9 +89,9 @@ Sheet( @@ -89,9 +89,9 @@ Sheet(
89 89
90 #### Fit modes 90 #### Fit modes
91 91
92 -By default the sheet height will be the minimun between the max available height and the one recommended by the child. 92 +By default the sheet height will be the minimum between the max available height and the one recommended by the child.
93 93
94 -It is possible to force the sheet child to be the maxium size available by setting `SheetFit.expand` 94 +It is possible to force the sheet child to be the maximum size available by setting `SheetFit.expand`
95 95
96 ```dart 96 ```dart
97 Sheet( 97 Sheet(
@@ -104,7 +104,7 @@ Sheet( @@ -104,7 +104,7 @@ Sheet(
104 #### Resizable 104 #### Resizable
105 105
106 By default the sheet has a fixed sized and it is vertically translated according to the user drag. 106 By default the sheet has a fixed sized and it is vertically translated according to the user drag.
107 -It is posible to make the sheet change the height of the child by setting `resize: true` 107 +It is possible to make the sheet change the height of the child by setting `resize: true`
108 This will force the child to fit the available visual space. 108 This will force the child to fit the available visual space.
109 109
110 ```dart 110 ```dart
@@ -131,7 +131,7 @@ Sheet( @@ -131,7 +131,7 @@ Sheet(
131 131
132 #### Control the position of the sheet 132 #### Control the position of the sheet
133 133
134 -It is possible to pass a `SheetController` to control programatically the position of the sheet. 134 +It is possible to pass a `SheetController` to control programmatically the position of the sheet.
135 135
136 ```dart 136 ```dart
137 SheetController controller = SheetController(); 137 SheetController controller = SheetController();
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 - objectVersion = 50; 6 + objectVersion = 54;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
@@ -171,10 +171,12 @@ @@ -171,10 +171,12 @@
171 /* Begin PBXShellScriptBuildPhase section */ 171 /* Begin PBXShellScriptBuildPhase section */
172 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 172 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
173 isa = PBXShellScriptBuildPhase; 173 isa = PBXShellScriptBuildPhase;
  174 + alwaysOutOfDate = 1;
174 buildActionMask = 2147483647; 175 buildActionMask = 2147483647;
175 files = ( 176 files = (
176 ); 177 );
177 inputPaths = ( 178 inputPaths = (
  179 + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
178 ); 180 );
179 name = "Thin Binary"; 181 name = "Thin Binary";
180 outputPaths = ( 182 outputPaths = (
@@ -185,6 +187,7 @@ @@ -185,6 +187,7 @@
185 }; 187 };
186 9740EEB61CF901F6004384FC /* Run Script */ = { 188 9740EEB61CF901F6004384FC /* Run Script */ = {
187 isa = PBXShellScriptBuildPhase; 189 isa = PBXShellScriptBuildPhase;
  190 + alwaysOutOfDate = 1;
188 buildActionMask = 2147483647; 191 buildActionMask = 2147483647;
189 files = ( 192 files = (
190 ); 193 );
@@ -288,7 +291,7 @@ @@ -288,7 +291,7 @@
288 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 291 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
289 CLANG_ENABLE_MODULES = YES; 292 CLANG_ENABLE_MODULES = YES;
290 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 293 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
291 - DEVELOPMENT_TEAM = 8734Y6QF3F; 294 + DEVELOPMENT_TEAM = 87RQQPQ85J;
292 ENABLE_BITCODE = NO; 295 ENABLE_BITCODE = NO;
293 FRAMEWORK_SEARCH_PATHS = ( 296 FRAMEWORK_SEARCH_PATHS = (
294 "$(inherited)", 297 "$(inherited)",
@@ -425,7 +428,7 @@ @@ -425,7 +428,7 @@
425 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 428 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
426 CLANG_ENABLE_MODULES = YES; 429 CLANG_ENABLE_MODULES = YES;
427 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 430 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
428 - DEVELOPMENT_TEAM = 8734Y6QF3F; 431 + DEVELOPMENT_TEAM = 87RQQPQ85J;
429 ENABLE_BITCODE = NO; 432 ENABLE_BITCODE = NO;
430 FRAMEWORK_SEARCH_PATHS = ( 433 FRAMEWORK_SEARCH_PATHS = (
431 "$(inherited)", 434 "$(inherited)",
@@ -456,7 +459,7 @@ @@ -456,7 +459,7 @@
456 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 459 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
457 CLANG_ENABLE_MODULES = YES; 460 CLANG_ENABLE_MODULES = YES;
458 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 461 CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
459 - DEVELOPMENT_TEAM = 8734Y6QF3F; 462 + DEVELOPMENT_TEAM = 87RQQPQ85J;
460 ENABLE_BITCODE = NO; 463 ENABLE_BITCODE = NO;
461 FRAMEWORK_SEARCH_PATHS = ( 464 FRAMEWORK_SEARCH_PATHS = (
462 "$(inherited)", 465 "$(inherited)",
@@ -43,5 +43,7 @@ @@ -43,5 +43,7 @@
43 <false/> 43 <false/>
44 <key>CADisableMinimumFrameDurationOnPhone</key> 44 <key>CADisableMinimumFrameDurationOnPhone</key>
45 <true/> 45 <true/>
  46 + <key>UIApplicationSupportsIndirectInputEvents</key>
  47 + <true/>
46 </dict> 48 </dict>
47 </plist> 49 </plist>
@@ -5,28 +5,112 @@ class NestedScrollModal extends StatelessWidget { @@ -5,28 +5,112 @@ class NestedScrollModal extends StatelessWidget {
5 5
6 @override 6 @override
7 Widget build(BuildContext context) { 7 Widget build(BuildContext context) {
8 - return NestedScrollView(  
9 - physics: const ClampingScrollPhysics(),  
10 - controller: PrimaryScrollController.of(context),  
11 - headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {  
12 - return <Widget>[  
13 - SliverList(  
14 - delegate: SliverChildListDelegate(  
15 - <Widget>[  
16 - Container(height: 300, color: Colors.blue),  
17 - ],  
18 - ), 8 + final List<String> tabs = <String>['Tab 1', 'Tab 2'];
  9 + return DefaultTabController(
  10 + length: tabs.length, // This is the number of tabs.
  11 + child: Scaffold(
  12 + body: NestedScrollView(
  13 + headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
  14 + // These are the slivers that show up in the "outer" scroll view.
  15 + return <Widget>[
  16 + SliverOverlapAbsorber(
  17 + // This widget takes the overlapping behavior of the SliverAppBar,
  18 + // and redirects it to the SliverOverlapInjector below. If it is
  19 + // missing, then it is possible for the nested "inner" scroll view
  20 + // below to end up under the SliverAppBar even when the inner
  21 + // scroll view thinks it has not been scrolled.
  22 + // This is not necessary if the "headerSliverBuilder" only builds
  23 + // widgets that do not overlap the next sliver.
  24 + handle:
  25 + NestedScrollView.sliverOverlapAbsorberHandleFor(context),
  26 + sliver: SliverAppBar(
  27 + title:
  28 + const Text('Books'), // This is the title in the app bar.
  29 + pinned: true,
  30 + expandedHeight: 150.0,
  31 + // The "forceElevated" property causes the SliverAppBar to show
  32 + // a shadow. The "innerBoxIsScrolled" parameter is true when the
  33 + // inner scroll view is scrolled beyond its "zero" point, i.e.
  34 + // when it appears to be scrolled below the SliverAppBar.
  35 + // Without this, there are cases where the shadow would appear
  36 + // or not appear inappropriately, because the SliverAppBar is
  37 + // not actually aware of the precise position of the inner
  38 + // scroll views.
  39 + forceElevated: innerBoxIsScrolled,
  40 + bottom: TabBar(
  41 + // These are the widgets to put in each tab in the tab bar.
  42 + tabs: tabs.map((String name) => Tab(text: name)).toList(),
  43 + ),
  44 + ),
  45 + ),
  46 + ];
  47 + },
  48 + body: TabBarView(
  49 + // These are the contents of the tab views, below the tabs.
  50 + children: tabs.map((String name) {
  51 + return SafeArea(
  52 + top: false,
  53 + bottom: false,
  54 + child: Builder(
  55 + // This Builder is needed to provide a BuildContext that is
  56 + // "inside" the NestedScrollView, so that
  57 + // sliverOverlapAbsorberHandleFor() can find the
  58 + // NestedScrollView.
  59 + builder: (BuildContext context) {
  60 + return CustomScrollView(
  61 + controller: PrimaryScrollController.of(context),
  62 + // The "controller" and "primary" members should be left
  63 + // unset, so that the NestedScrollView can control this
  64 + // inner scroll view.
  65 + // If the "controller" property is set, then this scroll
  66 + // view will not be associated with the NestedScrollView.
  67 + // The PageStorageKey should be unique to this ScrollView;
  68 + // it allows the list to remember its scroll position when
  69 + // the tab view is not on the screen.
  70 + key: PageStorageKey<String>(name),
  71 + slivers: <Widget>[
  72 + SliverOverlapInjector(
  73 + // This is the flip side of the SliverOverlapAbsorber
  74 + // above.
  75 + handle:
  76 + NestedScrollView.sliverOverlapAbsorberHandleFor(
  77 + context),
  78 + ),
  79 + SliverPadding(
  80 + padding: const EdgeInsets.all(8.0),
  81 + // In this example, the inner scroll view has
  82 + // fixed-height list items, hence the use of
  83 + // SliverFixedExtentList. However, one could use any
  84 + // sliver widget here, e.g. SliverList or SliverGrid.
  85 + sliver: SliverFixedExtentList(
  86 + // The items in this example are fixed to 48 pixels
  87 + // high. This matches the Material Design spec for
  88 + // ListTile widgets.
  89 + itemExtent: 48.0,
  90 + delegate: SliverChildBuilderDelegate(
  91 + (BuildContext context, int index) {
  92 + // This builder is called for each child.
  93 + // In this example, we just number each list item.
  94 + return ListTile(
  95 + title: Text('Item $index'),
  96 + );
  97 + },
  98 + // The childCount of the SliverChildBuilderDelegate
  99 + // specifies how many children this inner list
  100 + // has. In this example, each tab has a list of
  101 + // exactly 30 items, but this is arbitrary.
  102 + childCount: 30,
  103 + ),
  104 + ),
  105 + ),
  106 + ],
  107 + );
  108 + },
  109 + ),
  110 + );
  111 + }).toList(),
19 ), 112 ),
20 - ];  
21 - },  
22 - body: ListView.builder(  
23 - itemBuilder: (BuildContext context, int index) {  
24 - return Container(  
25 - height: 100,  
26 - color: index.isOdd ? Colors.green : Colors.orange,  
27 - );  
28 - },  
29 - itemCount: 12, 113 + ),
30 ), 114 ),
31 ); 115 );
32 } 116 }
@@ -66,7 +66,7 @@ class _GoRouterBooksAppState extends State<GoRouterBooksApp> { @@ -66,7 +66,7 @@ class _GoRouterBooksAppState extends State<GoRouterBooksApp> {
66 name: 'book', 66 name: 'book',
67 path: 'book/:bid', 67 path: 'book/:bid',
68 pageBuilder: (BuildContext context, GoRouterState state) { 68 pageBuilder: (BuildContext context, GoRouterState state) {
69 - final String id = state.params['bid']!; 69 + final String id = state.pathParameters['bid']!;
70 final Book? book = 70 final Book? book =
71 books.firstWhereOrNull((Book b) => b.id == id); 71 books.firstWhereOrNull((Book b) => b.id == id);
72 return CupertinoSheetPage<void>( 72 return CupertinoSheetPage<void>(
@@ -76,8 +76,8 @@ class _GoRouterBooksAppState extends State<GoRouterBooksApp> { @@ -76,8 +76,8 @@ class _GoRouterBooksAppState extends State<GoRouterBooksApp> {
76 ), 76 ),
77 ); 77 );
78 }, 78 },
79 - redirect: (GoRouterState state) {  
80 - final String id = state.params['bid']!; 79 + redirect: (context, state) {
  80 + final String id = state.pathParameters['bid']!;
81 final Book? book = 81 final Book? book =
82 books.firstWhereOrNull((Book b) => b.id == id); 82 books.firstWhereOrNull((Book b) => b.id == id);
83 if (book == null) { 83 if (book == null) {
@@ -17,6 +17,7 @@ import 'package:flutter/material.dart'; @@ -17,6 +17,7 @@ import 'package:flutter/material.dart';
17 import 'package:sheet/route.dart'; 17 import 'package:sheet/route.dart';
18 import 'package:sheet/sheet.dart'; 18 import 'package:sheet/sheet.dart';
19 19
  20 +import 'examples/route/examples/modal_with_nested_scroll.dart';
20 import 'examples/route/navigation/go_router.dart'; 21 import 'examples/route/navigation/go_router.dart';
21 22
22 class RouteExamplePage extends StatelessWidget { 23 class RouteExamplePage extends StatelessWidget {
@@ -251,15 +252,14 @@ class RouteExamplePage extends StatelessWidget { @@ -251,15 +252,14 @@ class RouteExamplePage extends StatelessWidget {
251 ), 252 ),
252 ), 253 ),
253 254
254 - // TODO(jaime): It does not work for nested scroll yet  
255 - // ListTile(  
256 - // title: Text('Modal with Nested Scroll'),  
257 - // onTap: () => Navigator.of(context).push(  
258 - // CupertinoSheetRoute<void>(  
259 - // builder: (context) => NestedScrollModal(),  
260 - // ),  
261 - // ),  
262 - // ), 255 + ListTile(
  256 + title: Text('Modal with Nested Scroll'),
  257 + onTap: () => Navigator.of(context).push(
  258 + CupertinoSheetRoute<void>(
  259 + builder: (context) => NestedScrollModal(),
  260 + ),
  261 + ),
  262 + ),
263 ListTile( 263 ListTile(
264 title: const Text('Modal with PageView'), 264 title: const Text('Modal with PageView'),
265 onTap: () => Navigator.of(context).push( 265 onTap: () => Navigator.of(context).push(
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 - objectVersion = 51; 6 + objectVersion = 54;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXAggregateTarget section */ 9 /* Begin PBXAggregateTarget section */
@@ -182,7 +182,7 @@ @@ -182,7 +182,7 @@
182 isa = PBXProject; 182 isa = PBXProject;
183 attributes = { 183 attributes = {
184 LastSwiftUpdateCheck = 0920; 184 LastSwiftUpdateCheck = 0920;
185 - LastUpgradeCheck = 0930; 185 + LastUpgradeCheck = 1300;
186 ORGANIZATIONNAME = "The Flutter Authors"; 186 ORGANIZATIONNAME = "The Flutter Authors";
187 TargetAttributes = { 187 TargetAttributes = {
188 33CC10EC2044A3C60003C045 = { 188 33CC10EC2044A3C60003C045 = {
@@ -235,6 +235,7 @@ @@ -235,6 +235,7 @@
235 /* Begin PBXShellScriptBuildPhase section */ 235 /* Begin PBXShellScriptBuildPhase section */
236 3399D490228B24CF009A79C7 /* ShellScript */ = { 236 3399D490228B24CF009A79C7 /* ShellScript */ = {
237 isa = PBXShellScriptBuildPhase; 237 isa = PBXShellScriptBuildPhase;
  238 + alwaysOutOfDate = 1;
238 buildActionMask = 2147483647; 239 buildActionMask = 2147483647;
239 files = ( 240 files = (
240 ); 241 );
@@ -344,7 +345,7 @@ @@ -344,7 +345,7 @@
344 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 345 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
345 GCC_WARN_UNUSED_FUNCTION = YES; 346 GCC_WARN_UNUSED_FUNCTION = YES;
346 GCC_WARN_UNUSED_VARIABLE = YES; 347 GCC_WARN_UNUSED_VARIABLE = YES;
347 - MACOSX_DEPLOYMENT_TARGET = 10.11; 348 + MACOSX_DEPLOYMENT_TARGET = 10.14;
348 MTL_ENABLE_DEBUG_INFO = NO; 349 MTL_ENABLE_DEBUG_INFO = NO;
349 SDKROOT = macosx; 350 SDKROOT = macosx;
350 SWIFT_COMPILATION_MODE = wholemodule; 351 SWIFT_COMPILATION_MODE = wholemodule;
@@ -427,7 +428,7 @@ @@ -427,7 +428,7 @@
427 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 428 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
428 GCC_WARN_UNUSED_FUNCTION = YES; 429 GCC_WARN_UNUSED_FUNCTION = YES;
429 GCC_WARN_UNUSED_VARIABLE = YES; 430 GCC_WARN_UNUSED_VARIABLE = YES;
430 - MACOSX_DEPLOYMENT_TARGET = 10.11; 431 + MACOSX_DEPLOYMENT_TARGET = 10.14;
431 MTL_ENABLE_DEBUG_INFO = YES; 432 MTL_ENABLE_DEBUG_INFO = YES;
432 ONLY_ACTIVE_ARCH = YES; 433 ONLY_ACTIVE_ARCH = YES;
433 SDKROOT = macosx; 434 SDKROOT = macosx;
@@ -474,7 +475,7 @@ @@ -474,7 +475,7 @@
474 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 475 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
475 GCC_WARN_UNUSED_FUNCTION = YES; 476 GCC_WARN_UNUSED_FUNCTION = YES;
476 GCC_WARN_UNUSED_VARIABLE = YES; 477 GCC_WARN_UNUSED_VARIABLE = YES;
477 - MACOSX_DEPLOYMENT_TARGET = 10.11; 478 + MACOSX_DEPLOYMENT_TARGET = 10.14;
478 MTL_ENABLE_DEBUG_INFO = NO; 479 MTL_ENABLE_DEBUG_INFO = NO;
479 SDKROOT = macosx; 480 SDKROOT = macosx;
480 SWIFT_COMPILATION_MODE = wholemodule; 481 SWIFT_COMPILATION_MODE = wholemodule;
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <Scheme 2 <Scheme
3 - LastUpgradeVersion = "1000" 3 + LastUpgradeVersion = "1300"
4 version = "1.3"> 4 version = "1.3">
5 <BuildAction 5 <BuildAction
6 parallelizeBuildables = "YES" 6 parallelizeBuildables = "YES"
@@ -45,10 +45,10 @@ packages: @@ -45,10 +45,10 @@ packages:
45 dependency: "direct main" 45 dependency: "direct main"
46 description: 46 description:
47 name: cupertino_icons 47 name: cupertino_icons
48 - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be 48 + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
49 url: "https://pub.dev" 49 url: "https://pub.dev"
50 source: hosted 50 source: hosted
51 - version: "1.0.5" 51 + version: "1.0.6"
52 equatable: 52 equatable:
53 dependency: "direct main" 53 dependency: "direct main"
54 description: 54 description:
@@ -84,18 +84,18 @@ packages: @@ -84,18 +84,18 @@ packages:
84 dependency: "direct main" 84 dependency: "direct main"
85 description: 85 description:
86 name: go_router 86 name: go_router
87 - sha256: aec1999abe8b2f131eda46d4c9629048fb1befed2b65e90b73f9193a300ce489 87 + sha256: "2cb236ba3f923043fdbe14a6a3a796b8c250e85658e28caee3e86c0c275847e5"
88 url: "https://pub.dev" 88 url: "https://pub.dev"
89 source: hosted 89 source: hosted
90 - version: "4.5.1" 90 + version: "8.2.0"
91 logging: 91 logging:
92 dependency: transitive 92 dependency: transitive
93 description: 93 description:
94 name: logging 94 name: logging
95 - sha256: c0bbfe94d46aedf9b8b3e695cf3bd48c8e14b35e3b2c639e0aa7755d589ba946 95 + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
96 url: "https://pub.dev" 96 url: "https://pub.dev"
97 source: hosted 97 source: hosted
98 - version: "1.1.0" 98 + version: "1.2.0"
99 matcher: 99 matcher:
100 dependency: transitive 100 dependency: transitive
101 description: 101 description:
@@ -222,4 +222,4 @@ packages: @@ -222,4 +222,4 @@ packages:
222 version: "0.1.4-beta" 222 version: "0.1.4-beta"
223 sdks: 223 sdks:
224 dart: ">=3.1.0-185.0.dev <4.0.0" 224 dart: ">=3.1.0-185.0.dev <4.0.0"
225 - flutter: ">=3.7.0" 225 + flutter: ">=3.3.0"
@@ -4,18 +4,17 @@ publish_to: 'none' @@ -4,18 +4,17 @@ publish_to: 'none'
4 version: 1.0.0+1 4 version: 1.0.0+1
5 5
6 environment: 6 environment:
7 - sdk: ">=2.17.0 <3.0.0"  
8 - flutter: ">=3.7.0" 7 + sdk: ">=3.0.0 <4.0.0"
9 8
10 dependencies: 9 dependencies:
11 flutter: 10 flutter:
12 sdk: flutter 11 sdk: flutter
13 - equatable: ^2.0.3 12 + equatable: ^2.0.5
14 cupertino_icons: ^1.0.0 13 cupertino_icons: ^1.0.0
15 - provider: ^6.0.2 14 + provider: ^6.0.5
16 sheet: 15 sheet:
17 path: ../ 16 path: ../
18 - go_router: ^4.3.0 17 + go_router: ^8.0.5
19 18
20 dev_dependencies: 19 dev_dependencies:
21 flutter_test: 20 flutter_test:
@@ -169,7 +169,7 @@ class BouncingSheetPhysics extends ScrollPhysics with SheetPhysics { @@ -169,7 +169,7 @@ class BouncingSheetPhysics extends ScrollPhysics with SheetPhysics {
169 @override 169 @override
170 Simulation? createBallisticSimulation( 170 Simulation? createBallisticSimulation(
171 ScrollMetrics position, double velocity) { 171 ScrollMetrics position, double velocity) {
172 - final Tolerance tolerance = toleranceFor(position); 172 +
173 if (position.outOfRange) { 173 if (position.outOfRange) {
174 return BouncingScrollSimulation( 174 return BouncingScrollSimulation(
175 spring: const SpringDescription( 175 spring: const SpringDescription(
@@ -181,7 +181,7 @@ class BouncingSheetPhysics extends ScrollPhysics with SheetPhysics { @@ -181,7 +181,7 @@ class BouncingSheetPhysics extends ScrollPhysics with SheetPhysics {
181 velocity: velocity, 181 velocity: velocity,
182 leadingExtent: position.minScrollExtent, 182 leadingExtent: position.minScrollExtent,
183 trailingExtent: position.maxScrollExtent, 183 trailingExtent: position.maxScrollExtent,
184 - tolerance: tolerance, 184 + tolerance: toleranceFor(position),
185 ); 185 );
186 } 186 }
187 return super.createBallisticSimulation(position, velocity); 187 return super.createBallisticSimulation(position, velocity);
@@ -266,7 +266,6 @@ class NoMomentumSheetPhysics extends ScrollPhysics with SheetPhysics { @@ -266,7 +266,6 @@ class NoMomentumSheetPhysics extends ScrollPhysics with SheetPhysics {
266 @override 266 @override
267 Simulation? createBallisticSimulation( 267 Simulation? createBallisticSimulation(
268 ScrollMetrics position, double velocity) { 268 ScrollMetrics position, double velocity) {
269 - final Tolerance tolerance = toleranceFor(position);  
270 if (position.outOfRange) { 269 if (position.outOfRange) {
271 double? end; 270 double? end;
272 if (position.pixels > position.maxScrollExtent) { 271 if (position.pixels > position.maxScrollExtent) {
@@ -280,7 +279,7 @@ class NoMomentumSheetPhysics extends ScrollPhysics with SheetPhysics { @@ -280,7 +279,7 @@ class NoMomentumSheetPhysics extends ScrollPhysics with SheetPhysics {
280 position.pixels, 279 position.pixels,
281 end!, 280 end!,
282 math.min(0.0, velocity), 281 math.min(0.0, velocity),
283 - tolerance: tolerance, 282 + tolerance: toleranceFor(position),
284 ); 283 );
285 } 284 }
286 return null; 285 return null;
@@ -514,7 +513,7 @@ class SnapSheetPhysics extends ScrollPhysics with SheetPhysics { @@ -514,7 +513,7 @@ class SnapSheetPhysics extends ScrollPhysics with SheetPhysics {
514 } 513 }
515 514
516 /// Describes how [SheetScrollable] widgets should behave. 515 /// Describes how [SheetScrollable] widgets should behave.
517 -class SheetBehaviour extends ScrollBehavior { 516 +class SheetBehavior extends ScrollBehavior {
518 static const SheetPhysics _clampingPhysics = 517 static const SheetPhysics _clampingPhysics =
519 NoMomentumSheetPhysics(parent: RangeMaintainingScrollPhysics()); 518 NoMomentumSheetPhysics(parent: RangeMaintainingScrollPhysics());
520 519
@@ -14,16 +14,11 @@ mixin PreviousSheetRouteMixin<T> on PageRoute<T> { @@ -14,16 +14,11 @@ mixin PreviousSheetRouteMixin<T> on PageRoute<T> {
14 class MaterialExtendedPageRoute<T> extends MaterialPageRoute<T> 14 class MaterialExtendedPageRoute<T> extends MaterialPageRoute<T>
15 with PreviousSheetRouteMixin<T>, DelegatedTransitionsRoute<T> { 15 with PreviousSheetRouteMixin<T>, DelegatedTransitionsRoute<T> {
16 MaterialExtendedPageRoute({ 16 MaterialExtendedPageRoute({
17 - required WidgetBuilder builder,  
18 - RouteSettings? settings,  
19 - bool maintainState = true,  
20 - bool fullscreenDialog = false,  
21 - }) : super(  
22 - builder: builder,  
23 - maintainState: maintainState,  
24 - settings: settings,  
25 - fullscreenDialog: fullscreenDialog,  
26 - ); 17 + required super.builder,
  18 + super.settings,
  19 + super.maintainState = true,
  20 + super.fullscreenDialog = false,
  21 + });
27 } 22 }
28 23
29 class MaterialExtendedPage<T> extends Page<T> { 24 class MaterialExtendedPage<T> extends Page<T> {
@@ -32,15 +27,11 @@ class MaterialExtendedPage<T> extends Page<T> { @@ -32,15 +27,11 @@ class MaterialExtendedPage<T> extends Page<T> {
32 required this.child, 27 required this.child,
33 this.maintainState = true, 28 this.maintainState = true,
34 this.fullscreenDialog = false, 29 this.fullscreenDialog = false,
35 - LocalKey? key,  
36 - String? name,  
37 - Object? arguments,  
38 - String? restorationId,  
39 - }) : super(  
40 - key: key,  
41 - name: name,  
42 - arguments: arguments,  
43 - restorationId: restorationId); 30 + super.key,
  31 + super.name,
  32 + super.arguments,
  33 + super.restorationId,
  34 + });
44 35
45 /// The content to be shown in the [Route] created by this page. 36 /// The content to be shown in the [Route] created by this page.
46 final Widget child; 37 final Widget child;
@@ -89,18 +80,12 @@ class _PageBasedMaterialPageRoute<T> extends MaterialExtendedPageRoute<T> { @@ -89,18 +80,12 @@ class _PageBasedMaterialPageRoute<T> extends MaterialExtendedPageRoute<T> {
89 class CupertinoExtendedPageRoute<T> extends CupertinoPageRoute<T> 80 class CupertinoExtendedPageRoute<T> extends CupertinoPageRoute<T>
90 with PreviousSheetRouteMixin<T>, DelegatedTransitionsRoute<T> { 81 with PreviousSheetRouteMixin<T>, DelegatedTransitionsRoute<T> {
91 CupertinoExtendedPageRoute({ 82 CupertinoExtendedPageRoute({
92 - required WidgetBuilder builder,  
93 - String? title,  
94 - RouteSettings? settings,  
95 - bool maintainState = true,  
96 - bool fullscreenDialog = false,  
97 - }) : super(  
98 - builder: builder,  
99 - title: title,  
100 - maintainState: maintainState,  
101 - settings: settings,  
102 - fullscreenDialog: fullscreenDialog,  
103 - ); 83 + required super.builder,
  84 + super.title,
  85 + super.settings,
  86 + super.maintainState = true,
  87 + super.fullscreenDialog = false,
  88 + });
104 } 89 }
105 90
106 class CupertinoExtendedPage<T> extends Page<T> { 91 class CupertinoExtendedPage<T> extends Page<T> {
@@ -110,15 +95,11 @@ class CupertinoExtendedPage<T> extends Page<T> { @@ -110,15 +95,11 @@ class CupertinoExtendedPage<T> extends Page<T> {
110 this.maintainState = true, 95 this.maintainState = true,
111 this.title, 96 this.title,
112 this.fullscreenDialog = false, 97 this.fullscreenDialog = false,
113 - LocalKey? key,  
114 - String? name,  
115 - Object? arguments,  
116 - String? restorationId,  
117 - }) : super(  
118 - key: key,  
119 - name: name,  
120 - arguments: arguments,  
121 - restorationId: restorationId); 98 + super.key,
  99 + super.name,
  100 + super.arguments,
  101 + super.restorationId,
  102 + });
122 103
123 /// The content to be shown in the [Route] created by this page. 104 /// The content to be shown in the [Route] created by this page.
124 final Widget child; 105 final Widget child;
@@ -26,7 +26,7 @@ const Radius _kCupertinoSheetTopRadius = Radius.circular(10.0); @@ -26,7 +26,7 @@ const Radius _kCupertinoSheetTopRadius = Radius.circular(10.0);
26 const Radius _kRoundedDeviceRadius = Radius.circular(38.5); 26 const Radius _kRoundedDeviceRadius = Radius.circular(38.5);
27 27
28 /// Minimal distance from the top of the screen to the top of the previous route 28 /// Minimal distance from the top of the screen to the top of the previous route
29 -/// It will be used ff the top safearea is less than this value. 29 +/// It will be used ff the top safe area is less than this value.
30 /// In iPhones the top SafeArea is more or equal to this distance. 30 /// In iPhones the top SafeArea is more or equal to this distance.
31 const double _kSheetMinimalOffset = 10; 31 const double _kSheetMinimalOffset = 10;
32 32
@@ -38,18 +38,17 @@ const double _kRoundedDeviceStatusBarHeight = 20; @@ -38,18 +38,17 @@ const double _kRoundedDeviceStatusBarHeight = 20;
38 const Curve _kCupertinoSheetCurve = Curves.easeOutExpo; 38 const Curve _kCupertinoSheetCurve = Curves.easeOutExpo;
39 const Curve _kCupertinoTransitionCurve = Curves.linear; 39 const Curve _kCupertinoTransitionCurve = Curves.linear;
40 40
41 -/// Wraps the child into a cupertino modal sheet appareance. This is used to 41 +/// Wraps the child into a cupertino modal sheet appearance. This is used to
42 /// create a [SheetRoute]. 42 /// create a [SheetRoute].
43 /// 43 ///
44 /// Clip the child widget to rectangle with top rounded corners and adds 44 /// Clip the child widget to rectangle with top rounded corners and adds
45 /// top padding and top safe area. 45 /// top padding and top safe area.
46 class _CupertinoSheetDecorationBuilder extends StatelessWidget { 46 class _CupertinoSheetDecorationBuilder extends StatelessWidget {
47 const _CupertinoSheetDecorationBuilder({ 47 const _CupertinoSheetDecorationBuilder({
48 - Key? key,  
49 required this.child, 48 required this.child,
50 required this.topRadius, 49 required this.topRadius,
51 this.backgroundColor, 50 this.backgroundColor,
52 - }) : super(key: key); 51 + });
53 52
54 /// The child contained by the modal sheet 53 /// The child contained by the modal sheet
55 final Widget child; 54 final Widget child;
@@ -86,22 +85,22 @@ class _CupertinoSheetDecorationBuilder extends StatelessWidget { @@ -86,22 +85,22 @@ class _CupertinoSheetDecorationBuilder extends StatelessWidget {
86 } 85 }
87 86
88 /// A modal route that overlays a widget over the current route and animates 87 /// A modal route that overlays a widget over the current route and animates
89 -/// it from the bottom with a cupertino modal sheet appareance 88 +/// it from the bottom with a cupertino modal sheet appearance
90 /// 89 ///
91 /// Clip the child widget to rectangle with top rounded corners and adds 90 /// Clip the child widget to rectangle with top rounded corners and adds
92 /// top padding and top safe area. 91 /// top padding and top safe area.
93 /// 92 ///
94 /// * [CupertinoSheetPage], which is the [Page] version of this class 93 /// * [CupertinoSheetPage], which is the [Page] version of this class
95 class CupertinoSheetRoute<T> extends SheetRoute<T> { 94 class CupertinoSheetRoute<T> extends SheetRoute<T> {
96 - CupertinoSheetRoute(  
97 - {required WidgetBuilder builder,  
98 - List<double>? stops,  
99 - double initialStop = 1,  
100 - RouteSettings? settings,  
101 - Color? backgroundColor,  
102 - bool maintainState = true,  
103 - super.fit})  
104 - : super( 95 + CupertinoSheetRoute({
  96 + required WidgetBuilder builder,
  97 + super.stops,
  98 + double initialStop = 1,
  99 + super.settings,
  100 + Color? backgroundColor,
  101 + super.maintainState = true,
  102 + super.fit,
  103 + }) : super(
105 builder: (BuildContext context) { 104 builder: (BuildContext context) {
106 return _CupertinoSheetDecorationBuilder( 105 return _CupertinoSheetDecorationBuilder(
107 child: Builder(builder: builder), 106 child: Builder(builder: builder),
@@ -109,11 +108,8 @@ class CupertinoSheetRoute<T> extends SheetRoute<T> { @@ -109,11 +108,8 @@ class CupertinoSheetRoute<T> extends SheetRoute<T> {
109 topRadius: _kCupertinoSheetTopRadius, 108 topRadius: _kCupertinoSheetTopRadius,
110 ); 109 );
111 }, 110 },
112 - settings: settings,  
113 animationCurve: _kCupertinoSheetCurve, 111 animationCurve: _kCupertinoSheetCurve,
114 - stops: stops,  
115 initialExtent: initialStop, 112 initialExtent: initialStop,
116 - maintainState: maintainState,  
117 ); 113 );
118 114
119 @override 115 @override
@@ -239,7 +235,7 @@ class CupertinoSheetBottomRouteTransition extends StatelessWidget { @@ -239,7 +235,7 @@ class CupertinoSheetBottomRouteTransition extends StatelessWidget {
239 235
240 // Currently iOS does not provide any way to detect the radius of the 236 // Currently iOS does not provide any way to detect the radius of the
241 // screen device. Right not we detect if the safe area has the size 237 // screen device. Right not we detect if the safe area has the size
242 - // for the device that contain a notch as they are the ones rigth 238 + // for the device that contain a notch as they are the ones right
243 // now that has corners with radius 239 // now that has corners with radius
244 Radius _getRadiusForDevice(MediaQueryData mediaQuery) { 240 Radius _getRadiusForDevice(MediaQueryData mediaQuery) {
245 final double topPadding = mediaQuery.padding.top; 241 final double topPadding = mediaQuery.padding.top;
@@ -305,7 +301,7 @@ class CupertinoSheetBottomRouteTransition extends StatelessWidget { @@ -305,7 +301,7 @@ class CupertinoSheetBottomRouteTransition extends StatelessWidget {
305 } 301 }
306 302
307 /// A modal page that overlays a widget over the current route and animates 303 /// A modal page that overlays a widget over the current route and animates
308 -/// it from the bottom with a cupertino modal sheet appareance 304 +/// it from the bottom with a cupertino modal sheet appearance
309 /// 305 ///
310 /// Clip the child widget to rectangle with top rounded corners and adds 306 /// Clip the child widget to rectangle with top rounded corners and adds
311 /// top padding and top safe area. 307 /// top padding and top safe area.
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'package:flutter/material.dart'; 5 import 'package:flutter/material.dart';
  6 +import 'package:flutter/rendering.dart';
6 import 'package:flutter/widgets.dart'; 7 import 'package:flutter/widgets.dart';
7 import 'package:sheet/route.dart'; 8 import 'package:sheet/route.dart';
8 import 'package:sheet/sheet.dart'; 9 import 'package:sheet/sheet.dart';
@@ -27,7 +28,7 @@ const Color _kBarrierColor = Color(0x59000000); @@ -27,7 +28,7 @@ const Color _kBarrierColor = Color(0x59000000);
27 /// See also: 28 /// See also:
28 /// 29 ///
29 /// * [SheetPage], which is a [Page] of this class. 30 /// * [SheetPage], which is a [Page] of this class.
30 -/// * [CupertinoSheetRoute], which is has an iOS appareance 31 +/// * [CupertinoSheetRoute], which is has an iOS appearance
31 class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> { 32 class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> {
32 SheetRoute({ 33 SheetRoute({
33 required this.builder, 34 required this.builder,
@@ -45,9 +46,9 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> { @@ -45,9 +46,9 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> {
45 this.maintainState = true, 46 this.maintainState = true,
46 this.willPopThreshold = _kWillPopThreshold, 47 this.willPopThreshold = _kWillPopThreshold,
47 this.decorationBuilder, 48 this.decorationBuilder,
48 - RouteSettings? settings, 49 + super.settings,
49 }) : transitionDuration = duration ?? _kSheetTransitionDuration, 50 }) : transitionDuration = duration ?? _kSheetTransitionDuration,
50 - super(settings: settings, fullscreenDialog: true); 51 + super(fullscreenDialog: true);
51 52
52 /// Builds the primary contents of the route. 53 /// Builds the primary contents of the route.
53 final WidgetBuilder builder; 54 final WidgetBuilder builder;
@@ -85,7 +86,7 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> { @@ -85,7 +86,7 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> {
85 86
86 /// Drag threshold to block any interaction if [Route.willPop] returns false 87 /// Drag threshold to block any interaction if [Route.willPop] returns false
87 /// See also: 88 /// See also:
88 - /// * [WillPopScope], that allow to block an attemp to close a [ModalRoute] 89 + /// * [WillPopScope], that allow to block an attempt to close a [ModalRoute]
89 final double willPopThreshold; 90 final double willPopThreshold;
90 91
91 /// {@macro flutter.widgets.TransitionRoute.transitionDuration} 92 /// {@macro flutter.widgets.TransitionRoute.transitionDuration}
@@ -95,7 +96,7 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> { @@ -95,7 +96,7 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> {
95 /// The semantic label used for a sheet modal route. 96 /// The semantic label used for a sheet modal route.
96 final String? sheetLabel; 97 final String? sheetLabel;
97 98
98 - /// Wraps the child in a custom sheet decoration appareance 99 + /// Wraps the child in a custom sheet decoration appearance
99 /// 100 ///
100 /// The default value is null. 101 /// The default value is null.
101 final SheetDecorationBuilder? decorationBuilder; 102 final SheetDecorationBuilder? decorationBuilder;
@@ -225,9 +226,9 @@ class SheetPage<T> extends Page<T> { @@ -225,9 +226,9 @@ class SheetPage<T> extends Page<T> {
225 const SheetPage( 226 const SheetPage(
226 {required this.child, 227 {required this.child,
227 this.maintainState = true, 228 this.maintainState = true,
228 - LocalKey? key,  
229 - String? name,  
230 - Object? arguments, 229 + super.key,
  230 + super.name,
  231 + super.arguments,
231 this.initialExtent = 1, 232 this.initialExtent = 1,
232 this.stops, 233 this.stops,
233 this.draggable = true, 234 this.draggable = true,
@@ -241,12 +242,7 @@ class SheetPage<T> extends Page<T> { @@ -241,12 +242,7 @@ class SheetPage<T> extends Page<T> {
241 this.barrierDismissible = true, 242 this.barrierDismissible = true,
242 this.willPopThreshold = _kWillPopThreshold, 243 this.willPopThreshold = _kWillPopThreshold,
243 this.decorationBuilder}) 244 this.decorationBuilder})
244 - : transitionDuration = duration ?? _kSheetTransitionDuration,  
245 - super(  
246 - key: key,  
247 - name: name,  
248 - arguments: arguments,  
249 - ); 245 + : transitionDuration = duration ?? _kSheetTransitionDuration;
250 246
251 /// Relative extent up to where the sheet is animated when pushed for 247 /// Relative extent up to where the sheet is animated when pushed for
252 /// the first time. 248 /// the first time.
@@ -287,7 +283,7 @@ class SheetPage<T> extends Page<T> { @@ -287,7 +283,7 @@ class SheetPage<T> extends Page<T> {
287 283
288 /// Drag threshold to block any interaction if [Route.willPop] returns false 284 /// Drag threshold to block any interaction if [Route.willPop] returns false
289 /// See also: 285 /// See also:
290 - /// * [WillPopScope], that allow to block an attemp to close a [ModalRoute] 286 + /// * [WillPopScope], that allow to block an attempt to close a [ModalRoute]
291 final double willPopThreshold; 287 final double willPopThreshold;
292 288
293 /// {@macro flutter.widgets.TransitionRoute.transitionDuration} 289 /// {@macro flutter.widgets.TransitionRoute.transitionDuration}
@@ -302,7 +298,7 @@ class SheetPage<T> extends Page<T> { @@ -302,7 +298,7 @@ class SheetPage<T> extends Page<T> {
302 298
303 final String? barrierLabel; 299 final String? barrierLabel;
304 300
305 - /// Wraps the child in a custom sheet decoration appareance 301 + /// Wraps the child in a custom sheet decoration appearance
306 /// 302 ///
307 /// The default value is null. 303 /// The default value is null.
308 final SheetDecorationBuilder? decorationBuilder; 304 final SheetDecorationBuilder? decorationBuilder;
@@ -332,30 +328,17 @@ class SheetPage<T> extends Page<T> { @@ -332,30 +328,17 @@ class SheetPage<T> extends Page<T> {
332 class _PageBasedSheetRoute<T> extends SheetRoute<T> { 328 class _PageBasedSheetRoute<T> extends SheetRoute<T> {
333 _PageBasedSheetRoute({ 329 _PageBasedSheetRoute({
334 required SheetPage<T> page, 330 required SheetPage<T> page,
335 - Color? barrierColor,  
336 - SheetPhysics? physics,  
337 - SheetFit fit = SheetFit.expand,  
338 - Curve? animationCurve,  
339 - bool barrierDismissible = true,  
340 - bool draggable = true,  
341 - Duration? duration,  
342 - List<double>? stops,  
343 - double initialExtent = 1,  
344 - SheetDecorationBuilder? decorationBuilder,  
345 - }) : super(  
346 - settings: page,  
347 - builder: (BuildContext context) => page.child,  
348 - physics: physics,  
349 - fit: fit,  
350 - stops: stops,  
351 - initialExtent: initialExtent,  
352 - barrierDismissible: barrierDismissible,  
353 - barrierColor: barrierColor,  
354 - draggable: draggable,  
355 - animationCurve: animationCurve,  
356 - duration: duration,  
357 - decorationBuilder: decorationBuilder,  
358 - ); 331 + super.physics,
  332 + required super.fit,
  333 + super.animationCurve,
  334 + required super.barrierDismissible,
  335 + super.barrierColor,
  336 + required super.draggable,
  337 + super.duration,
  338 + super.stops,
  339 + required super.initialExtent,
  340 + super.decorationBuilder,
  341 + }) : super(settings: page, builder: (BuildContext context) => page.child);
359 342
360 SheetPage<T> get _page => settings as SheetPage<T>; 343 SheetPage<T> get _page => settings as SheetPage<T>;
361 344
@@ -392,7 +375,6 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer> @@ -392,7 +375,6 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
392 curve: route.animationCurve ?? Curves.easeOut, 375 curve: route.animationCurve ?? Curves.easeOut,
393 ); 376 );
394 }); 377 });
395 -  
396 super.initState(); 378 super.initState();
397 } 379 }
398 380
@@ -406,8 +388,11 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer> @@ -406,8 +388,11 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
406 void onSheetExtentUpdate() { 388 void onSheetExtentUpdate() {
407 if (_routeController.value != _sheetController.animation.value) { 389 if (_routeController.value != _sheetController.animation.value) {
408 if (route.isCurrent && 390 if (route.isCurrent &&
  391 + !_firstAnimation &&
409 !_sheetController.position.preventingDrag && 392 !_sheetController.position.preventingDrag &&
410 - route.shouldPreventPopForExtent(_sheetController.animation.value)) { 393 + route.shouldPreventPopForExtent(_sheetController.animation.value) &&
  394 + _sheetController.position.userScrollDirection ==
  395 + ScrollDirection.forward) {
411 preventPop(); 396 preventPop();
412 return; 397 return;
413 } 398 }
@@ -420,9 +405,10 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer> @@ -420,9 +405,10 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
420 toHigh: 1, 405 toHigh: 1,
421 ); 406 );
422 _routeController.value = animationValue; 407 _routeController.value = animationValue;
423 -  
424 if (_sheetController.animation.value == 0) { 408 if (_sheetController.animation.value == 0) {
425 - widget.sheetRoute.navigator?.pop(); 409 + _routeController.value = 0.001;
  410 + _routeController.animateBack(0);
  411 + route.navigator?.pop();
426 } 412 }
427 } 413 }
428 } 414 }
@@ -436,6 +422,8 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer> @@ -436,6 +422,8 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
436 if (!_routeController.isAnimating) { 422 if (!_routeController.isAnimating) {
437 return; 423 return;
438 } 424 }
  425 + // widget.sheetRoute.navigator!.userGestureInProgressNotifier.value = false;
  426 +
439 if (!_firstAnimation && 427 if (!_firstAnimation &&
440 _routeController.value != _sheetController.animation.value) { 428 _routeController.value != _sheetController.animation.value) {
441 if (_routeController.status == AnimationStatus.forward) { 429 if (_routeController.status == AnimationStatus.forward) {
@@ -462,11 +450,12 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer> @@ -462,11 +450,12 @@ class __SheetRouteContainerState extends State<_SheetRouteContainer>
462 @protected 450 @protected
463 void preventPop() { 451 void preventPop() {
464 _sheetController.position.preventDrag(); 452 _sheetController.position.preventDrag();
465 - _sheetController.relativeAnimateTo(  
466 - 1, 453 + _sheetController.position.animateTo(
  454 + _sheetController.position.maxScrollExtent,
467 duration: const Duration(milliseconds: 400), 455 duration: const Duration(milliseconds: 400),
468 curve: Curves.easeInOut, 456 curve: Curves.easeInOut,
469 ); 457 );
  458 +
470 route.willPop().then( 459 route.willPop().then(
471 (RoutePopDisposition disposition) { 460 (RoutePopDisposition disposition) {
472 if (disposition == RoutePopDisposition.pop) { 461 if (disposition == RoutePopDisposition.pop) {
@@ -88,7 +88,7 @@ class SheetPrimaryScrollPosition extends ScrollPositionWithSingleContext { @@ -88,7 +88,7 @@ class SheetPrimaryScrollPosition extends ScrollPositionWithSingleContext {
88 final SheetContext sheetContext; 88 final SheetContext sheetContext;
89 SheetPosition get sheetPosition => sheetContext.position; 89 SheetPosition get sheetPosition => sheetContext.position;
90 90
91 - bool sheetShouldSheetAcceptUserOffser(double delta) { 91 + bool sheetShouldSheetAcceptUserOffset(double delta) {
92 // Can drag down if list already on the top 92 // Can drag down if list already on the top
93 final bool canDragForward = delta >= 0 && pixels <= minScrollExtent; 93 final bool canDragForward = delta >= 0 && pixels <= minScrollExtent;
94 94
@@ -106,63 +106,37 @@ class SheetPrimaryScrollPosition extends ScrollPositionWithSingleContext { @@ -106,63 +106,37 @@ class SheetPrimaryScrollPosition extends ScrollPositionWithSingleContext {
106 if (sheetPosition.preventingDrag) { 106 if (sheetPosition.preventingDrag) {
107 return; 107 return;
108 } 108 }
109 - if (sheetShouldSheetAcceptUserOffser(delta)) {  
110 - final double pixels = sheetPosition.pixels - 109 + if (sheetShouldSheetAcceptUserOffset(delta)) {
  110 + if (sheetPosition.activity is! _SheetScrollActivity) {
  111 + sheetPosition.beginActivity(_SheetScrollActivity(sheetPosition));
  112 + }
  113 + final double sheetDelta =
111 sheetPosition.physics.applyPhysicsToUserOffset(sheetPosition, delta); 114 sheetPosition.physics.applyPhysicsToUserOffset(sheetPosition, delta);
112 -  
113 - sheetPosition.forcePixels(  
114 - pixels.clamp(  
115 - sheetPosition.minScrollExtent, sheetPosition.maxScrollExtent),  
116 - );  
117 - sheetPosition.beginActivity(_SheetScrollActivity(sheetPosition)); 115 + sheetPosition.applyUserOffset(sheetDelta);
118 return; 116 return;
119 } else { 117 } else {
120 super.applyUserOffset(delta); 118 super.applyUserOffset(delta);
121 - sheetPosition.goIdle(); 119 + if (sheetPosition.activity is! HoldScrollActivity) {
  120 + sheetPosition.hold(() {});
  121 + }
122 } 122 }
123 } 123 }
124 124
125 @override 125 @override
126 void goBallistic(double velocity) { 126 void goBallistic(double velocity) {
127 if (sheetPosition.preventingDrag) { 127 if (sheetPosition.preventingDrag) {
128 - beginActivity(  
129 - BallisticScrollActivity(  
130 - this,  
131 - ScrollSpringSimulation(  
132 - SpringDescription.withDampingRatio(  
133 - mass: 0.5,  
134 - stiffness: 100.0,  
135 - ratio: 1.1,  
136 - ),  
137 - pixels,  
138 - 0,  
139 - velocity,  
140 - ),  
141 - context.vsync,  
142 - true,  
143 - ),  
144 - );  
145 - 128 + goIdle();
146 return; 129 return;
147 } 130 }
148 131
149 - final bool sheetDragging = sheetPosition.activity!.isScrolling;  
150 - if (sheetDragging &&  
151 - sheetPosition.hasContentDimensions &&  
152 - !sheetPosition.preventingDrag &&  
153 - sheetPosition.activity!.isScrolling) { 132 + if (sheetPosition.hasContentDimensions) {
154 sheetPosition.goBallistic(velocity); 133 sheetPosition.goBallistic(velocity);
155 - } else {  
156 - sheetPosition.goIdle();  
157 } 134 }
158 135
159 - if (!sheetDragging) {  
160 - super.goBallistic(velocity);  
161 - return;  
162 - } else if (velocity > 0.0 && 136 + if (velocity > 0.0 &&
163 sheetPosition.pixels >= sheetPosition.maxScrollExtent || 137 sheetPosition.pixels >= sheetPosition.maxScrollExtent ||
164 (velocity < 0.0 && pixels > 0)) { 138 (velocity < 0.0 && pixels > 0)) {
165 - // super.goBallistic(velocity); 139 + super.goBallistic(velocity);
166 return; 140 return;
167 } else if (outOfRange) { 141 } else if (outOfRange) {
168 beginActivity( 142 beginActivity(
@@ -183,11 +157,9 @@ class SheetPrimaryScrollPosition extends ScrollPositionWithSingleContext { @@ -183,11 +157,9 @@ class SheetPrimaryScrollPosition extends ScrollPositionWithSingleContext {
183 ), 157 ),
184 ); 158 );
185 return; 159 return;
  160 + } else {
  161 + goIdle();
  162 + return;
186 } 163 }
187 -  
188 - goIdle();  
189 } 164 }
190 -  
191 - //@override  
192 - //double get pixels => super.pixels + viewportDimension;  
193 } 165 }
@@ -196,11 +196,11 @@ class SheetScrollable extends StatefulWidget { @@ -196,11 +196,11 @@ class SheetScrollable extends StatefulWidget {
196 196
197 /// {@macro flutter.widgets.shadow.scrollBehavior} 197 /// {@macro flutter.widgets.shadow.scrollBehavior}
198 /// 198 ///
199 - /// [SheetBehaviour]s also provide [SheetPhysics]. If an explicit 199 + /// [SheetBehavior]s also provide [SheetPhysics]. If an explicit
200 /// [ScrollPhysics] is provided in [physics], it will take precedence, 200 /// [ScrollPhysics] is provided in [physics], it will take precedence,
201 /// followed by [scrollBehavior], and then the inherited ancestor 201 /// followed by [scrollBehavior], and then the inherited ancestor
202 - /// [SheetBehaviour].  
203 - final SheetBehaviour? scrollBehavior; 202 + /// [SheetBehavior].
  203 + final SheetBehavior? scrollBehavior;
204 204
205 final double? initialExtent; 205 final double? initialExtent;
206 206
@@ -328,7 +328,7 @@ class SheetState extends State<SheetScrollable> @@ -328,7 +328,7 @@ class SheetState extends State<SheetScrollable>
328 @override 328 @override
329 AxisDirection get axisDirection => widget.axisDirection; 329 AxisDirection get axisDirection => widget.axisDirection;
330 330
331 - late SheetBehaviour _configuration; 331 + late SheetBehavior _configuration;
332 ScrollPhysics? _physics; 332 ScrollPhysics? _physics;
333 SheetController? _fallbackScrollController; 333 SheetController? _fallbackScrollController;
334 334
@@ -339,7 +339,7 @@ class SheetState extends State<SheetScrollable> @@ -339,7 +339,7 @@ class SheetState extends State<SheetScrollable>
339 339
340 // Only call this from places that will definitely trigger a rebuild. 340 // Only call this from places that will definitely trigger a rebuild.
341 void _updatePosition() { 341 void _updatePosition() {
342 - _configuration = widget.scrollBehavior ?? SheetBehaviour(); 342 + _configuration = widget.scrollBehavior ?? SheetBehavior();
343 _physics = _configuration.getScrollPhysics(context); 343 _physics = _configuration.getScrollPhysics(context);
344 if (widget.physics != null) { 344 if (widget.physics != null) {
345 _physics = widget.physics!.applyTo(_physics); 345 _physics = widget.physics!.applyTo(_physics);
@@ -21,14 +21,14 @@ enum SheetFit { @@ -21,14 +21,14 @@ enum SheetFit {
21 /// The constraints passed to the child from the sheet are loosened. 21 /// The constraints passed to the child from the sheet are loosened.
22 /// 22 ///
23 /// For example, if the sheet has expand constraints with 600 high, this would allow the child of the sheet to have any 23 /// For example, if the sheet has expand constraints with 600 high, this would allow the child of the sheet to have any
24 - /// height from zero to maximun available. 24 + /// height from zero to maximum available.
25 loose, 25 loose,
26 26
27 /// The constraints passed to the stack from its parent are tightened to the 27 /// The constraints passed to the stack from its parent are tightened to the
28 /// biggest size allowed. 28 /// biggest size allowed.
29 /// 29 ///
30 /// For example, if the sheet has loose constraints with a height in the 30 /// For example, if the sheet has loose constraints with a height in the
31 - /// range 0 to 600, then the child of the shhet would all be sized 31 + /// range 0 to 600, then the child of the sheet would all be sized
32 /// as 600 high. 32 /// as 600 high.
33 expand, 33 expand,
34 } 34 }
@@ -54,7 +54,7 @@ typedef SheetDecorationBuilder = Widget Function( @@ -54,7 +54,7 @@ typedef SheetDecorationBuilder = Widget Function(
54 /// 54 ///
55 /// By default the bottom sheet inherits the values provided by the 55 /// By default the bottom sheet inherits the values provided by the
56 /// material theme and prioritize the ones passed in the constructor. 56 /// material theme and prioritize the ones passed in the constructor.
57 -/// Use [Sheet.raw] if you wish to remove the Material appareance and 57 +/// Use [Sheet.raw] if you wish to remove the Material appearance and
58 /// build your own 58 /// build your own
59 /// 59 ///
60 /// See also: 60 /// See also:
@@ -115,7 +115,7 @@ class Sheet extends StatelessWidget { @@ -115,7 +115,7 @@ class Sheet extends StatelessWidget {
115 /// Empty space to surround the [child]. 115 /// Empty space to surround the [child].
116 final EdgeInsets padding; 116 final EdgeInsets padding;
117 117
118 - /// The inital height to use when displaying the widget. 118 + /// The initial height to use when displaying the widget.
119 /// 119 ///
120 /// This value will be clamped between [minExtent] and [maxExtent] 120 /// This value will be clamped between [minExtent] and [maxExtent]
121 /// 121 ///
@@ -129,12 +129,12 @@ class Sheet extends StatelessWidget { @@ -129,12 +129,12 @@ class Sheet extends StatelessWidget {
129 129
130 /// The maximum height to use when displaying the widget. 130 /// The maximum height to use when displaying the widget.
131 /// 131 ///
132 - /// This value will be clamped to be as maximun the parent container's height 132 + /// This value will be clamped to be as maximum the parent container's height
133 /// 133 ///
134 /// The default value is `double.infinity`. 134 /// The default value is `double.infinity`.
135 final double? maxExtent; 135 final double? maxExtent;
136 136
137 - /// The height area of the minimun interaction zone to allow to 137 + /// The height area of the minimum interaction zone to allow to
138 /// drag up the sheet when it is closed 138 /// drag up the sheet when it is closed
139 /// 139 ///
140 /// The default value is `0`. 140 /// The default value is `0`.
@@ -148,10 +148,10 @@ class Sheet extends StatelessWidget { @@ -148,10 +148,10 @@ class Sheet extends StatelessWidget {
148 /// The default value is `false`. 148 /// The default value is `false`.
149 final bool resizable; 149 final bool resizable;
150 150
151 - /// If resizable true, the minimun height that the sheet can be. 151 + /// If resizable true, the minimum height that the sheet can be.
152 /// The content of the sheet will be resized to fit the 152 /// The content of the sheet will be resized to fit the
153 /// available visible space until this value, after that will be 153 /// available visible space until this value, after that will be
154 - /// translated keeping this minimun height. 154 + /// translated keeping this minimum height.
155 /// 155 ///
156 /// The default value is `0`. 156 /// The default value is `0`.
157 final double? minResizableExtent; 157 final double? minResizableExtent;
@@ -212,7 +212,7 @@ class Sheet extends StatelessWidget { @@ -212,7 +212,7 @@ class Sheet extends StatelessWidget {
212 /// will be [Clip.none]. 212 /// will be [Clip.none].
213 final Clip? clipBehavior; 213 final Clip? clipBehavior;
214 214
215 - /// Wraps the child in a custom sheet decoration appareance 215 + /// Wraps the child in a custom sheet decoration appearance
216 /// If null, the sheet has material appareance 216 /// If null, the sheet has material appareance
217 /// 217 ///
218 /// The default value is null. 218 /// The default value is null.
@@ -222,8 +222,7 @@ class Sheet extends StatelessWidget { @@ -222,8 +222,7 @@ class Sheet extends StatelessWidget {
222 return child; 222 return child;
223 } 223 }
224 224
225 - @override  
226 - Widget build(BuildContext context) { 225 + Widget decorationBuild(BuildContext context, Widget child) {
227 final SheetDecorationBuilder decorationBuilder = this.decorationBuilder ?? 226 final SheetDecorationBuilder decorationBuilder = this.decorationBuilder ??
228 (BuildContext context, Widget child) { 227 (BuildContext context, Widget child) {
229 final BottomSheetThemeData bottomSheetTheme = 228 final BottomSheetThemeData bottomSheetTheme =
@@ -244,6 +243,11 @@ class Sheet extends StatelessWidget { @@ -244,6 +243,11 @@ class Sheet extends StatelessWidget {
244 child: child, 243 child: child,
245 ); 244 );
246 }; 245 };
  246 + return decorationBuilder(context, child);
  247 + }
  248 +
  249 + @override
  250 + Widget build(BuildContext context) {
247 final SheetController? effectiveController = 251 final SheetController? effectiveController =
248 controller ?? DefaultSheetController.of(context); 252 controller ?? DefaultSheetController.of(context);
249 final double? initialExtent = 253 final double? initialExtent =
@@ -254,7 +258,7 @@ class Sheet extends StatelessWidget { @@ -254,7 +258,7 @@ class Sheet extends StatelessWidget {
254 physics: physics, 258 physics: physics,
255 controller: effectiveController, 259 controller: effectiveController,
256 axisDirection: AxisDirection.down, 260 axisDirection: AxisDirection.down,
257 - scrollBehavior: SheetBehaviour(), 261 + scrollBehavior: SheetBehavior(),
258 viewportBuilder: (BuildContext context, ViewportOffset offset) { 262 viewportBuilder: (BuildContext context, ViewportOffset offset) {
259 return _DefaultSheetScrollController( 263 return _DefaultSheetScrollController(
260 child: ScrollToTopStatusBarHandler( 264 child: ScrollToTopStatusBarHandler(
@@ -274,10 +278,7 @@ class Sheet extends StatelessWidget { @@ -274,10 +278,7 @@ class Sheet extends StatelessWidget {
274 child: Builder( 278 child: Builder(
275 key: const Key('_sheet_child'), 279 key: const Key('_sheet_child'),
276 builder: (BuildContext context) { 280 builder: (BuildContext context) {
277 - return decorationBuilder(  
278 - context,  
279 - child,  
280 - ); 281 + return decorationBuild(context, child);
281 }, 282 },
282 ), 283 ),
283 ), 284 ),
@@ -317,12 +318,7 @@ class _DefaultSheetScrollController extends StatelessWidget { @@ -317,12 +318,7 @@ class _DefaultSheetScrollController extends StatelessWidget {
317 /// * [SheetPosition], which manages the positioning logic for 318 /// * [SheetPosition], which manages the positioning logic for
318 /// this controller. 319 /// this controller.
319 class SheetController extends ScrollController { 320 class SheetController extends ScrollController {
320 - SheetController({  
321 - String? debugLabel,  
322 - }) : super(  
323 - debugLabel: debugLabel,  
324 - initialScrollOffset: 0,  
325 - ); 321 + SheetController({super.debugLabel}) : super(initialScrollOffset: 0);
326 322
327 final ProxyAnimation _animation = ProxyAnimation(); 323 final ProxyAnimation _animation = ProxyAnimation();
328 Animation<double> get animation => _animation; 324 Animation<double> get animation => _animation;
@@ -411,20 +407,13 @@ class SheetController extends ScrollController { @@ -411,20 +407,13 @@ class SheetController extends ScrollController {
411 /// * [_SheetScrollController], which uses this as its [ScrollPosition]. 407 /// * [_SheetScrollController], which uses this as its [ScrollPosition].
412 class SheetPosition extends ScrollPositionWithSingleContext { 408 class SheetPosition extends ScrollPositionWithSingleContext {
413 SheetPosition({ 409 SheetPosition({
414 - required ScrollPhysics physics,  
415 - required SheetContext context,  
416 - double initialPixels = 0.0,  
417 - bool keepScrollOffset = true,  
418 - ScrollPosition? oldPosition,  
419 - String? debugLabel,  
420 - }) : super(  
421 - physics: physics,  
422 - context: context,  
423 - initialPixels: initialPixels,  
424 - keepScrollOffset: keepScrollOffset,  
425 - oldPosition: oldPosition,  
426 - debugLabel: debugLabel,  
427 - ); 410 + required super.physics,
  411 + required SheetContext super.context,
  412 + super.initialPixels = 0.0,
  413 + super.keepScrollOffset = true,
  414 + super.oldPosition,
  415 + super.debugLabel,
  416 + });
428 417
429 late final SheetPrimaryScrollController _scrollController = 418 late final SheetPrimaryScrollController _scrollController =
430 SheetPrimaryScrollController(sheetContext: context as SheetContext); 419 SheetPrimaryScrollController(sheetContext: context as SheetContext);
@@ -540,15 +529,15 @@ class SheetPosition extends ScrollPositionWithSingleContext { @@ -540,15 +529,15 @@ class SheetPosition extends ScrollPositionWithSingleContext {
540 529
541 class SheetViewport extends SingleChildRenderObjectWidget { 530 class SheetViewport extends SingleChildRenderObjectWidget {
542 const SheetViewport({ 531 const SheetViewport({
543 - Key? key, 532 + super.key,
544 this.axisDirection = AxisDirection.down, 533 this.axisDirection = AxisDirection.down,
545 required this.offset, 534 required this.offset,
546 this.minExtent, 535 this.minExtent,
547 this.maxExtent, 536 this.maxExtent,
548 - Widget? child, 537 + super.child,
549 required this.fit, 538 required this.fit,
550 required this.clipBehavior, 539 required this.clipBehavior,
551 - }) : super(key: key, child: child); 540 + });
552 541
553 final AxisDirection axisDirection; 542 final AxisDirection axisDirection;
554 final ViewportOffset offset; 543 final ViewportOffset offset;
@@ -801,13 +790,13 @@ class RenderSheetViewport extends RenderBox @@ -801,13 +790,13 @@ class RenderSheetViewport extends RenderBox
801 minHeight = overflowHeight; 790 minHeight = overflowHeight;
802 } 791 }
803 792
804 - final BoxConstraints childContstraints = BoxConstraints( 793 + final BoxConstraints childConstraints = BoxConstraints(
805 minHeight: minHeight, 794 minHeight: minHeight,
806 maxHeight: maxHeight, 795 maxHeight: maxHeight,
807 minWidth: constraints.minWidth, 796 minWidth: constraints.minWidth,
808 maxWidth: constraints.maxWidth, 797 maxWidth: constraints.maxWidth,
809 ); 798 );
810 - child!.layout(childContstraints, parentUsesSize: true); 799 + child!.layout(childConstraints, parentUsesSize: true);
811 size = constraints.biggest; 800 size = constraints.biggest;
812 } 801 }
813 802
@@ -955,7 +944,7 @@ class RenderSheetViewport extends RenderBox @@ -955,7 +944,7 @@ class RenderSheetViewport extends RenderBox
955 Curve curve = Curves.ease, 944 Curve curve = Curves.ease,
956 }) { 945 }) {
957 return; 946 return;
958 - // TODO(jaime): check showOnScreen method beheves when keyboard appears on 947 + // TODO(jaime): check showOnScreen method behaves when keyboard appears on
959 // the screen 948 // the screen
960 // if (!offset.allowImplicitScrolling) { 949 // if (!offset.allowImplicitScrolling) {
961 // return super.showOnScreen( 950 // return super.showOnScreen(
@@ -3,7 +3,7 @@ import 'package:sheet/sheet.dart'; @@ -3,7 +3,7 @@ import 'package:sheet/sheet.dart';
3 3
4 typedef SheetControllerCallback = void Function(SheetController controller); 4 typedef SheetControllerCallback = void Function(SheetController controller);
5 5
6 -/// A widget that injets a [SheetController] that can be used by 6 +/// A widget that injects a [SheetController] that can be used by
7 /// any [Sheet] children 7 /// any [Sheet] children
8 /// 8 ///
9 /// It is useful for creating initial animations 9 /// It is useful for creating initial animations
  1 +import 'package:flutter/material.dart';
  2 +import 'package:sheet/sheet.dart';
  3 +
  4 +class MaterialSheet extends Sheet {
  5 + const MaterialSheet({
  6 + super.key,
  7 + required super.child,
  8 + super.controller,
  9 + super.physics,
  10 + super.initialExtent,
  11 + super.minExtent,
  12 + super.maxExtent,
  13 + super.minInteractionExtent = 20.0,
  14 + super.backgroundColor,
  15 + super.clipBehavior,
  16 + super.shape,
  17 + super.elevation,
  18 + super.fit = SheetFit.loose,
  19 + super.resizable = false,
  20 + super.padding = EdgeInsets.zero,
  21 + super.minResizableExtent,
  22 + });
  23 +
  24 + @override
  25 + Widget decorationBuild(BuildContext context, Widget child) {
  26 + final BottomSheetThemeData bottomSheetTheme =
  27 + Theme.of(context).bottomSheetTheme;
  28 + final Color? color = backgroundColor ?? bottomSheetTheme.backgroundColor;
  29 + final double elevation = this.elevation ?? bottomSheetTheme.elevation ?? 0;
  30 + final ShapeBorder? shape = this.shape ?? bottomSheetTheme.shape;
  31 + final Clip clipBehavior =
  32 + this.clipBehavior ?? bottomSheetTheme.clipBehavior ?? Clip.none;
  33 +
  34 + return Material(
  35 + color: color,
  36 + elevation: elevation,
  37 + shape: shape,
  38 + clipBehavior: clipBehavior,
  39 + child: child,
  40 + );
  41 + }
  42 +}
@@ -5,26 +5,26 @@ packages: @@ -5,26 +5,26 @@ packages:
5 dependency: transitive 5 dependency: transitive
6 description: 6 description:
7 name: _fe_analyzer_shared 7 name: _fe_analyzer_shared
8 - sha256: "0c80aeab9bc807ab10022cd3b2f4cf2ecdf231949dc1ddd9442406a003f19201" 8 + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
9 url: "https://pub.dev" 9 url: "https://pub.dev"
10 source: hosted 10 source: hosted
11 - version: "52.0.0" 11 + version: "61.0.0"
12 analyzer: 12 analyzer:
13 dependency: transitive 13 dependency: transitive
14 description: 14 description:
15 name: analyzer 15 name: analyzer
16 - sha256: cd8ee83568a77f3ae6b913a36093a1c9b1264e7cb7f834d9ddd2311dade9c1f4 16 + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
17 url: "https://pub.dev" 17 url: "https://pub.dev"
18 source: hosted 18 source: hosted
19 - version: "5.4.0" 19 + version: "5.13.0"
20 args: 20 args:
21 dependency: transitive 21 dependency: transitive
22 description: 22 description:
23 name: args 23 name: args
24 - sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611" 24 + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
25 url: "https://pub.dev" 25 url: "https://pub.dev"
26 source: hosted 26 source: hosted
27 - version: "2.3.2" 27 + version: "2.4.2"
28 async: 28 async:
29 dependency: transitive 29 dependency: transitive
30 description: 30 description:
@@ -77,18 +77,18 @@ packages: @@ -77,18 +77,18 @@ packages:
77 dependency: transitive 77 dependency: transitive
78 description: 78 description:
79 name: coverage 79 name: coverage
80 - sha256: "961c4aebd27917269b1896382c7cb1b1ba81629ba669ba09c27a7e5710ec9040" 80 + sha256: "595a29b55ce82d53398e1bcc2cba525d7bd7c59faeb2d2540e9d42c390cfeeeb"
81 url: "https://pub.dev" 81 url: "https://pub.dev"
82 source: hosted 82 source: hosted
83 - version: "1.6.2" 83 + version: "1.6.4"
84 crypto: 84 crypto:
85 dependency: transitive 85 dependency: transitive
86 description: 86 description:
87 name: crypto 87 name: crypto
88 - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 88 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
89 url: "https://pub.dev" 89 url: "https://pub.dev"
90 source: hosted 90 source: hosted
91 - version: "3.0.2" 91 + version: "3.0.3"
92 fake_async: 92 fake_async:
93 dependency: transitive 93 dependency: transitive
94 description: 94 description:
@@ -101,10 +101,10 @@ packages: @@ -101,10 +101,10 @@ packages:
101 dependency: transitive 101 dependency: transitive
102 description: 102 description:
103 name: file 103 name: file
104 - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" 104 + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
105 url: "https://pub.dev" 105 url: "https://pub.dev"
106 source: hosted 106 source: hosted
107 - version: "6.1.4" 107 + version: "7.0.0"
108 flutter: 108 flutter:
109 dependency: "direct main" 109 dependency: "direct main"
110 description: flutter 110 description: flutter
@@ -127,10 +127,10 @@ packages: @@ -127,10 +127,10 @@ packages:
127 dependency: transitive 127 dependency: transitive
128 description: 128 description:
129 name: glob 129 name: glob
130 - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" 130 + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
131 url: "https://pub.dev" 131 url: "https://pub.dev"
132 source: hosted 132 source: hosted
133 - version: "2.1.1" 133 + version: "2.1.2"
134 http_multi_server: 134 http_multi_server:
135 dependency: transitive 135 dependency: transitive
136 description: 136 description:
@@ -159,26 +159,26 @@ packages: @@ -159,26 +159,26 @@ packages:
159 dependency: transitive 159 dependency: transitive
160 description: 160 description:
161 name: js 161 name: js
162 - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" 162 + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
163 url: "https://pub.dev" 163 url: "https://pub.dev"
164 source: hosted 164 source: hosted
165 - version: "0.6.5" 165 + version: "0.6.7"
166 lints: 166 lints:
167 dependency: "direct dev" 167 dependency: "direct dev"
168 description: 168 description:
169 name: lints 169 name: lints
170 - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" 170 + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
171 url: "https://pub.dev" 171 url: "https://pub.dev"
172 source: hosted 172 source: hosted
173 - version: "2.0.1" 173 + version: "2.1.1"
174 logging: 174 logging:
175 dependency: transitive 175 dependency: transitive
176 description: 176 description:
177 name: logging 177 name: logging
178 - sha256: c0bbfe94d46aedf9b8b3e695cf3bd48c8e14b35e3b2c639e0aa7755d589ba946 178 + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
179 url: "https://pub.dev" 179 url: "https://pub.dev"
180 source: hosted 180 source: hosted
181 - version: "1.1.0" 181 + version: "1.2.0"
182 matcher: 182 matcher:
183 dependency: transitive 183 dependency: transitive
184 description: 184 description:
@@ -223,10 +223,10 @@ packages: @@ -223,10 +223,10 @@ packages:
223 dependency: transitive 223 dependency: transitive
224 description: 224 description:
225 name: node_preamble 225 name: node_preamble
226 - sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" 226 + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
227 url: "https://pub.dev" 227 url: "https://pub.dev"
228 source: hosted 228 source: hosted
229 - version: "2.0.1" 229 + version: "2.0.2"
230 package_config: 230 package_config:
231 dependency: transitive 231 dependency: transitive
232 description: 232 description:
@@ -255,42 +255,42 @@ packages: @@ -255,42 +255,42 @@ packages:
255 dependency: transitive 255 dependency: transitive
256 description: 256 description:
257 name: pub_semver 257 name: pub_semver
258 - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" 258 + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
259 url: "https://pub.dev" 259 url: "https://pub.dev"
260 source: hosted 260 source: hosted
261 - version: "2.1.3" 261 + version: "2.1.4"
262 shelf: 262 shelf:
263 dependency: transitive 263 dependency: transitive
264 description: 264 description:
265 name: shelf 265 name: shelf
266 - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c 266 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
267 url: "https://pub.dev" 267 url: "https://pub.dev"
268 source: hosted 268 source: hosted
269 - version: "1.4.0" 269 + version: "1.4.1"
270 shelf_packages_handler: 270 shelf_packages_handler:
271 dependency: transitive 271 dependency: transitive
272 description: 272 description:
273 name: shelf_packages_handler 273 name: shelf_packages_handler
274 - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 274 + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
275 url: "https://pub.dev" 275 url: "https://pub.dev"
276 source: hosted 276 source: hosted
277 - version: "3.0.1" 277 + version: "3.0.2"
278 shelf_static: 278 shelf_static:
279 dependency: transitive 279 dependency: transitive
280 description: 280 description:
281 name: shelf_static 281 name: shelf_static
282 - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c 282 + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e
283 url: "https://pub.dev" 283 url: "https://pub.dev"
284 source: hosted 284 source: hosted
285 - version: "1.1.1" 285 + version: "1.1.2"
286 shelf_web_socket: 286 shelf_web_socket:
287 dependency: transitive 287 dependency: transitive
288 description: 288 description:
289 name: shelf_web_socket 289 name: shelf_web_socket
290 - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 290 + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
291 url: "https://pub.dev" 291 url: "https://pub.dev"
292 source: hosted 292 source: hosted
293 - version: "1.0.3" 293 + version: "1.0.4"
294 sky_engine: 294 sky_engine:
295 dependency: transitive 295 dependency: transitive
296 description: flutter 296 description: flutter
@@ -308,10 +308,10 @@ packages: @@ -308,10 +308,10 @@ packages:
308 dependency: transitive 308 dependency: transitive
309 description: 309 description:
310 name: source_maps 310 name: source_maps
311 - sha256: "490098075234dcedb83c5d949b4c93dad5e6b7702748de000be2b57b8e6b2427" 311 + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
312 url: "https://pub.dev" 312 url: "https://pub.dev"
313 source: hosted 313 source: hosted
314 - version: "0.10.11" 314 + version: "0.10.12"
315 source_span: 315 source_span:
316 dependency: transitive 316 dependency: transitive
317 description: 317 description:
@@ -380,10 +380,10 @@ packages: @@ -380,10 +380,10 @@ packages:
380 dependency: transitive 380 dependency: transitive
381 description: 381 description:
382 name: typed_data 382 name: typed_data
383 - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" 383 + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
384 url: "https://pub.dev" 384 url: "https://pub.dev"
385 source: hosted 385 source: hosted
386 - version: "1.3.1" 386 + version: "1.3.2"
387 vector_math: 387 vector_math:
388 dependency: transitive 388 dependency: transitive
389 description: 389 description:
@@ -396,18 +396,18 @@ packages: @@ -396,18 +396,18 @@ packages:
396 dependency: transitive 396 dependency: transitive
397 description: 397 description:
398 name: vm_service 398 name: vm_service
399 - sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7 399 + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583
400 url: "https://pub.dev" 400 url: "https://pub.dev"
401 source: hosted 401 source: hosted
402 - version: "9.4.0" 402 + version: "11.10.0"
403 watcher: 403 watcher:
404 dependency: transitive 404 dependency: transitive
405 description: 405 description:
406 name: watcher 406 name: watcher
407 - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" 407 + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
408 url: "https://pub.dev" 408 url: "https://pub.dev"
409 source: hosted 409 source: hosted
410 - version: "1.0.2" 410 + version: "1.1.0"
411 web: 411 web:
412 dependency: transitive 412 dependency: transitive
413 description: 413 description:
@@ -420,26 +420,25 @@ packages: @@ -420,26 +420,25 @@ packages:
420 dependency: transitive 420 dependency: transitive
421 description: 421 description:
422 name: web_socket_channel 422 name: web_socket_channel
423 - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b 423 + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
424 url: "https://pub.dev" 424 url: "https://pub.dev"
425 source: hosted 425 source: hosted
426 - version: "2.3.0" 426 + version: "2.4.0"
427 webkit_inspection_protocol: 427 webkit_inspection_protocol:
428 dependency: transitive 428 dependency: transitive
429 description: 429 description:
430 name: webkit_inspection_protocol 430 name: webkit_inspection_protocol
431 - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" 431 + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
432 url: "https://pub.dev" 432 url: "https://pub.dev"
433 source: hosted 433 source: hosted
434 - version: "1.2.0" 434 + version: "1.2.1"
435 yaml: 435 yaml:
436 dependency: transitive 436 dependency: transitive
437 description: 437 description:
438 name: yaml 438 name: yaml
439 - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" 439 + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
440 url: "https://pub.dev" 440 url: "https://pub.dev"
441 source: hosted 441 source: hosted
442 - version: "3.1.1" 442 + version: "3.1.2"
443 sdks: 443 sdks:
444 dart: ">=3.1.0-185.0.dev <4.0.0" 444 dart: ">=3.1.0-185.0.dev <4.0.0"
445 - flutter: ">=3.7.0"  
@@ -5,7 +5,6 @@ homepage: https://github.com/jamesblasco/modal_bottom_sheet @@ -5,7 +5,6 @@ homepage: https://github.com/jamesblasco/modal_bottom_sheet
5 5
6 environment: 6 environment:
7 sdk: ">=2.17.0 <3.0.0" 7 sdk: ">=2.17.0 <3.0.0"
8 - flutter: ">=3.7.0"  
9 8
10 dependencies: 9 dependencies:
11 flutter: 10 flutter:
@@ -15,6 +14,6 @@ dev_dependencies: @@ -15,6 +14,6 @@ dev_dependencies:
15 flutter_test: 14 flutter_test:
16 sdk: flutter 15 sdk: flutter
17 mocktail: ^0.3.0 16 mocktail: ^0.3.0
18 - lints: ^2.0.0 17 + lints: ^2.1.1
19 18
20 flutter: 19 flutter:
@@ -11,7 +11,6 @@ void main() { @@ -11,7 +11,6 @@ void main() {
11 testWidgets('defaultTestSize', (WidgetTester tester) async { 11 testWidgets('defaultTestSize', (WidgetTester tester) async {
12 final Size testSize = 12 final Size testSize =
13 tester.view.physicalSize / tester.view.devicePixelRatio; 13 tester.view.physicalSize / tester.view.devicePixelRatio;
14 -  
15 expect(testSize, equals(kScreenSize)); 14 expect(testSize, equals(kScreenSize));
16 }); 15 });
17 } 16 }
@@ -77,21 +77,21 @@ void main() { @@ -77,21 +77,21 @@ void main() {
77 77
78 test('overscroll is progressively harder', () { 78 test('overscroll is progressively harder', () {
79 final ScrollMetrics lessOverscrolledPosition = FixedScrollMetrics( 79 final ScrollMetrics lessOverscrolledPosition = FixedScrollMetrics(
80 - devicePixelRatio: 1,  
81 minScrollExtent: 0.0, 80 minScrollExtent: 0.0,
82 maxScrollExtent: 1000.0, 81 maxScrollExtent: 1000.0,
83 pixels: -20.0, 82 pixels: -20.0,
84 viewportDimension: 100.0, 83 viewportDimension: 100.0,
85 axisDirection: AxisDirection.down, 84 axisDirection: AxisDirection.down,
  85 + devicePixelRatio: 1,
86 ); 86 );
87 87
88 final ScrollMetrics moreOverscrolledPosition = FixedScrollMetrics( 88 final ScrollMetrics moreOverscrolledPosition = FixedScrollMetrics(
89 minScrollExtent: 0.0, 89 minScrollExtent: 0.0,
90 - devicePixelRatio: 1,  
91 maxScrollExtent: 1000.0, 90 maxScrollExtent: 1000.0,
92 pixels: -40.0, 91 pixels: -40.0,
93 viewportDimension: 100.0, 92 viewportDimension: 100.0,
94 axisDirection: AxisDirection.down, 93 axisDirection: AxisDirection.down,
  94 + devicePixelRatio: 1,
95 ); 95 );
96 96
97 final double lessOverscrollApplied = physicsUnderTest 97 final double lessOverscrollApplied = physicsUnderTest
@@ -116,11 +116,11 @@ void main() { @@ -116,11 +116,11 @@ void main() {
116 test('easing an overscroll still has resistance', () { 116 test('easing an overscroll still has resistance', () {
117 final ScrollMetrics overscrolledPosition = FixedScrollMetrics( 117 final ScrollMetrics overscrolledPosition = FixedScrollMetrics(
118 minScrollExtent: 0.0, 118 minScrollExtent: 0.0,
119 - devicePixelRatio: 1,  
120 maxScrollExtent: 1000.0, 119 maxScrollExtent: 1000.0,
121 pixels: -20.0, 120 pixels: -20.0,
122 viewportDimension: 100.0, 121 viewportDimension: 100.0,
123 axisDirection: AxisDirection.down, 122 axisDirection: AxisDirection.down,
  123 + devicePixelRatio: 1,
124 ); 124 );
125 125
126 final double easingApplied = physicsUnderTest.applyPhysicsToUserOffset( 126 final double easingApplied = physicsUnderTest.applyPhysicsToUserOffset(
@@ -154,10 +154,10 @@ void main() { @@ -154,10 +154,10 @@ void main() {
154 final ScrollMetrics overscrolledPosition = FixedScrollMetrics( 154 final ScrollMetrics overscrolledPosition = FixedScrollMetrics(
155 minScrollExtent: 0.0, 155 minScrollExtent: 0.0,
156 maxScrollExtent: 1000.0, 156 maxScrollExtent: 1000.0,
157 - devicePixelRatio: 1,  
158 pixels: -20.0, 157 pixels: -20.0,
159 viewportDimension: 100.0, 158 viewportDimension: 100.0,
160 axisDirection: AxisDirection.down, 159 axisDirection: AxisDirection.down,
  160 + devicePixelRatio: 1,
161 ); 161 );
162 162
163 final double easingApplied = physicsUnderTest.applyPhysicsToUserOffset( 163 final double easingApplied = physicsUnderTest.applyPhysicsToUserOffset(