top of page

[Flutter/dart] Scroll inside ModalBottomSheet


Overview


In the smartphone app, the menu may appear from the bottom of the screen when you select the menu, and in Flutter you can create it with showModalBottomSheet().

However, if there are many menus you want to display, you will not be able to fit them in the ModalBottomSheet. In such cases, we will show you how to scroll within the ModalBottomSheet.


Method


Create a DraggableScrollableSheet in the showModalBottomSheet builder as shown below, and specify the widget you want to display in its child.

@override
Widget build(BuildContext context) {

  List<String> menues=List.generate(20, (index) => "メニュー${index}");

  return Scaffold(
      appBar: AppBar(
        title: Text('demo'),
      ),
      body: Container(
        padding: const EdgeInsets.all(16),
        child: RaisedButton(
          child: Text('show menu'),
          onPressed: ()async{
            int t=await showModalBottomSheet(
              context: context,
              builder: (context)=> DraggableScrollableSheet(  //here!
                initialChildSize: 1,
                builder: (BuildContext context, ScrollController 
                scrollController)=>
                  Container(
                    child: ListView(
                      shrinkWrap: true,
                      children: menues.map((e) =>
                        ListTile(
                          title: Text(
                            e,
                            style: TextStyle(
                              fontSize: 18
                            ),
                          ),
                        )
                      ).toList(),
                    ),
                  )
              )
            );
          },
        )
      )
  );
}

initialChildSize sets the percentage of the parent widget.

You will be able to scroll like the video below!



Recent Posts

See All

[Flutter/Dart] Format string with TextField

What want to do I want to create an input form using TextField. For example, if the input content is a monetary amount, I would like to display it in 3-digit delimiters with a ¥ prefix. Rather than ha

Let's do our best with our partner:​ ChatReminder

iphone6.5p2.png

It is an application that achieves goals in a chat format with partners.

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

Let's do our best with our partner:​ ChatReminder

納品:iPhone6.5①.png

It is an application that achieves goals in a chat format with partners.

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

Theme diary: Decide the theme and record for each genre

It is a diary application that allows you to post and record with themes and sub-themes for each genre.

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

Inquiries: Please contact us on Twitter

  • Twitter
bottom of page