Showing
2 changed files
with
47 additions
and
1 deletions
| @@ -11,6 +11,7 @@ import 'modals/modal_fit.dart'; | @@ -11,6 +11,7 @@ import 'modals/modal_fit.dart'; | ||
| 11 | import 'modals/modal_inside_modal.dart'; | 11 | import 'modals/modal_inside_modal.dart'; |
| 12 | import 'modals/modal_will_scope.dart'; | 12 | import 'modals/modal_will_scope.dart'; |
| 13 | import 'modals/modal_with_navigator.dart'; | 13 | import 'modals/modal_with_navigator.dart'; |
| 14 | +import 'modals/modal_with_nested_scroll.dart'; | ||
| 14 | import 'modals/modal_with_scroll.dart'; | 15 | import 'modals/modal_with_scroll.dart'; |
| 15 | 16 | ||
| 16 | import 'examples/cupertino_share.dart'; | 17 | import 'examples/cupertino_share.dart'; |
| @@ -219,7 +220,7 @@ class _MyHomePageState extends State<MyHomePage> { | @@ -219,7 +220,7 @@ class _MyHomePageState extends State<MyHomePage> { | ||
| 219 | scrollController: scrollController), | 220 | scrollController: scrollController), |
| 220 | )), | 221 | )), |
| 221 | ListTile( | 222 | ListTile( |
| 222 | - title: Text('Cupertino Modal with WillPopScope'), | 223 | + title: Text('Modal with WillPopScope'), |
| 223 | onTap: () => showCupertinoModalBottomSheet( | 224 | onTap: () => showCupertinoModalBottomSheet( |
| 224 | expand: true, | 225 | expand: true, |
| 225 | context: context, | 226 | context: context, |
| @@ -228,6 +229,15 @@ class _MyHomePageState extends State<MyHomePage> { | @@ -228,6 +229,15 @@ class _MyHomePageState extends State<MyHomePage> { | ||
| 228 | ModalWillScope( | 229 | ModalWillScope( |
| 229 | scrollController: scrollController), | 230 | scrollController: scrollController), |
| 230 | )), | 231 | )), |
| 232 | + ListTile( | ||
| 233 | + title: Text('Modal with Nested Scroll'), | ||
| 234 | + onTap: () => showCupertinoModalBottomSheet( | ||
| 235 | + expand: true, | ||
| 236 | + context: context, | ||
| 237 | + builder: (context, scrollController) => | ||
| 238 | + NestedScrollModal( | ||
| 239 | + scrollController: scrollController), | ||
| 240 | + )), | ||
| 231 | ], | 241 | ], |
| 232 | ), | 242 | ), |
| 233 | ), | 243 | ), |
| 1 | +import 'package:flutter/cupertino.dart'; | ||
| 2 | +import 'package:flutter/material.dart'; | ||
| 3 | + | ||
| 4 | +class NestedScrollModal extends StatelessWidget { | ||
| 5 | + final ScrollController scrollController; | ||
| 6 | + | ||
| 7 | + const NestedScrollModal({Key key, this.scrollController}) : super(key: key); | ||
| 8 | + | ||
| 9 | + @override | ||
| 10 | + Widget build(BuildContext context) { | ||
| 11 | + return NestedScrollView( | ||
| 12 | + | ||
| 13 | + physics: ScrollPhysics(parent: PageScrollPhysics()), | ||
| 14 | + headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { | ||
| 15 | + return <Widget>[ | ||
| 16 | + SliverList( | ||
| 17 | + delegate: SliverChildListDelegate( | ||
| 18 | + [ | ||
| 19 | + Container(height: 300, color: Colors.blue), | ||
| 20 | + ], | ||
| 21 | + ), | ||
| 22 | + ), | ||
| 23 | + ]; | ||
| 24 | + }, | ||
| 25 | + body: ListView.builder( | ||
| 26 | + controller: scrollController, | ||
| 27 | + itemBuilder: (context, index) { | ||
| 28 | + return Container( | ||
| 29 | + height: 100, | ||
| 30 | + color: index.isOdd ? Colors.green : Colors.orange, | ||
| 31 | + ); | ||
| 32 | + }, | ||
| 33 | + itemCount: 12, | ||
| 34 | + )); | ||
| 35 | + } | ||
| 36 | +} |
-
Please register or login to post a comment