Показывать снэк-бар с эшафот внутри onPressed обратный вызов на Floating Action Button - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь позвонить

Scaffold.of(context).showSnackBar(SnackBar(
  content: Text("Snack text"),
));

внутри onPressed из floatingActionButton эшафот.

Я получаю эту ошибку

I/flutter (18613): Scaffold.of() called with a context that does not contain a Scaffold.
I/flutter (18613): No Scaffold ancestor could be found starting from the context that was passed to 
....

И это указываетк решению, когда вы вызываете Scaffold.of(context) внутри тела.

https://docs.flutter.io/flutter/material/Scaffold/of.html

Но то же решение не работает, если вы вызываете его внутри onPressed из FloatingActionButton

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Добавьте глобальный ключ состояния Scaffold и используйте его для отображения закусочной, как показано ниже,

GlobalKey<ScaffoldState> scaffoldState;

Scaffold {
key: scaffoldState,
....


scaffoldState.currentState.showSnackBar(new SnackBar(content: new Text('Hello!')));
0 голосов
/ 19 мая 2018

Вы должны поместить плавающий виджет ActionButton в виджет Builder. Следующий код должен работать:

@override
  Widget build(BuildContext context) {
    return new Scaffold(
      floatingActionButton: new Builder(builder: (BuildContext context) {
        return new FloatingActionButton(onPressed: () {
          Scaffold
              .of(context)
              .showSnackBar(new SnackBar(content: new Text('Hello!')));
        });
      }),
      body: new Container(
        padding: new EdgeInsets.all(32.0),
        child: new Column(
          children: <Widget>[
            new MySwitch(
              value: _switchValue,
              onChanged: (bool value) {
                if (value != _switchValue) {
                  setState(() {
                    _switchValue = value;
                  });
                }
              },
            )
          ],
        ),
      ),
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...