Как добавить ящик для SliverAppBar

Это мой код, скопированный из здесь:

SliverAppBar(
  expandedHeight: 150.0,
  flexibleSpace: const FlexibleSpaceBar(
      title: Text('Available seats'),
    ),
    actions: < Widget > [
      IconButton(
        icon: const Icon(Icons.add_circle),
          tooltip: 'Add new entry',
          onPressed: () { /* ... */ },
      ),
    ]
)

Но мне нужно добавить Drawer. Как мне это сделать?
Я пытаюсь перестроить свое приложение во Flutter.
Преобразование Java-приложения для Android в флаттер

Я заменил значок, но как мне создать Drawer?

leading: IconButton(icon: Icon( Icons.menu ),onPressed: ()=>{},)

Мой полный код

@override
  Widget build(BuildContext context) {

  return NestedScrollView(
      headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
        return <Widget>[
          SliverAppBar(
            leading: IconButton(
              icon: Icon(Icons.menu),
              onPressed: () => {},
            ),
            actions: <Widget>[
              IconButton(
                onPressed: () => {},
                icon: Icon(Icons.shopping_cart),
              )
            ],
            expandedHeight: 200.0,
            floating: false,
            pinned: true,
            flexibleSpace: FlexibleSpaceBar(
                centerTitle: true,
                title: Text("My Pet Shop",
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 16.0,
                    )),
                background: Image.network(
                  "https://firebasestorage.googleapis.com/v0/b/my-pet-world.appspot.com/o/images%2Fbannerads%2FxTmAblJI7fMF1l0nUa1gM32Kh9z1%2F734rm6w7bxznp%2FPETWORLD-HOME-SLIDER-KITTENS.webp?alt=media&token=cf7f48bb-6621-47b3-b3f8-d8b36fa89715",
                  fit: BoxFit.cover,
                )),
          ),
        ];
      },
      body: Container(
        margin: EdgeInsets.only(top: 0),
        child: Column(
          children: <Widget>[
            Expanded(
              //getHomePageWidget()
              child: ListView(
                padding: EdgeInsets.all(0.0),
                children: <Widget>[getHomePageWidget()],
              ),
            )
          ],
        ),
      ));
 }

person Midhilaj    schedule 31.12.2018    source источник
comment
Вам не нужно вручную добавлять значок меню в SliverAppBar. Значок меню появится волшебным образом, если у вас есть Scaffold в качестве его предка.   -  person dshukertjr    schedule 31.12.2018
comment
не могли бы вы обновить мой новый код   -  person Midhilaj    schedule 31.12.2018
comment
где добавить Scaffold в мой новый код?   -  person Midhilaj    schedule 31.12.2018
comment
Я только что сделал. В вашем основном коде было много ненужных кодов, поэтому я просто удалил их все и остался с getHomePageWidget().   -  person dshukertjr    schedule 31.12.2018


Ответы (1)


Ящик является свойством для Scaffold. Как только вы установите свойство ящика, значок меню автоматически появится в SliverAppBar.

Верните это в свой метод сборки, и вы получите то, что ищете.

  return Scaffold(
    body: CustomScrollView(
      slivers: <Widget>[
        SliverAppBar(
          expandedHeight: 200.0,
          flexibleSpace: const FlexibleSpaceBar(
            title: Text('Available seats'),
          ),
          actions: <Widget>[
            IconButton(
              icon: const Icon(Icons.add_circle),
              tooltip: 'Add new entry',
              onPressed: () {},
            ),
          ],
        ),
        SliverList(
          delegate: SliverChildListDelegate([
            getHomePageWidget(),
          ]),
        ),
      ],
    ),
    drawer: Drawer(),
  );

ПРИМЕЧАНИЕ: если у вас есть несколько Scaffold в дереве над CustomScrollView, то Drawer должно быть в самом низу Scaffold

person dshukertjr    schedule 31.12.2018
comment
@Midhilaj Извините, у меня была ошибка в коде. Я только что отредактировал его, и теперь он должен работать! - person dshukertjr; 31.12.2018
comment
позволь мне проверить - person Midhilaj; 31.12.2018
comment
@Midhilaj Дай мне знать, как дела - person dshukertjr; 31.12.2018
comment
@Midhilaj, что ты имеешь в виду? - person dshukertjr; 31.12.2018
comment
@Midhilaj Предоставленный вами код все еще не является полным кодом. Могу ли я увидеть всю функцию сборки? - person dshukertjr; 31.12.2018
comment
@Midhilaj Я забыл включить его в свой окончательный код, но эти проблемы следует решить, изменив плавающее свойство или закрепленное свойство SliverAppBar. Удачи! - person dshukertjr; 31.12.2018
comment
Ты великолепен в 23:48 ты помог мне, а мои друзья так не помогают - person Midhilaj; 31.12.2018
comment
@Midhilaj В любое время, друг мой, с Новым Годом! - person dshukertjr; 31.12.2018
comment
С Новым Годом . - person Midhilaj; 31.12.2018