Flidter Drawer Widget не отвечает

В активности ящика есть функция поиска, если я использую клавишу scaffold для открытия ящика, функция поиска не работает, так как моя клавиатура не открывается должным образом. И если я не использую клавишу скаффолда, то моя клавиатура открывается правильно, поэтому моя функция поиска работает как шарм, но ящик не открывается без клавиши скаффолда.

Как я могу достичь обеих функциональных возможностей?

Это код активности моего ящика:

return new Scaffold( 
 key:scaffoldKey,
new AppBar(
              centerTitle: true,
              leading: new IconButton(
                  icon: new Icon(Icons.menu),
                  onPressed: () => scaffoldKey.currentState.openDrawer()),
              title: new Text(
                title,
                style: Theme.of(context).textTheme.headline,
              ),
              backgroundColor: mainColor,
            )
);

Это мой код TextField:

new TextField(
                        style: Theme.of(context).textTheme.caption,
                        controller: searchController,
                        decoration: new InputDecoration(
                            hintText: "Search",
                            fillColor: Colors.black,
                            hintStyle: Theme.of(context).textTheme.caption,
                            icon: Icon(
                              IconData(0xe82a, fontFamily: 'iconFont'),
                              color: Colors.black,
                            ),
                            border: InputBorder.none),
                        onChanged: onSearchTextChanged,
                        keyboardType: TextInputType.text,
                      ),

1 ответ

Scaffold класс предоставляет свойство под названием drawer, Если вы используете это свойство, вам не нужно явно добавлять значок меню и onPressed слушатель иконы. Scaffold класс обрабатывает это автоматически. Вы можете попробовать этот код и посмотреть, работает ли он.

final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

Scaffold(
   key: _scaffoldKey,
   appBar: AppBar(
     title: Text("Flutter Demo"),
   ),
   drawer: Drawer(
     child: ListView(
        children: <Widget>[
           ListTile(title: Text("Drawer"))
        ],
     ),
   ),
   body: Container(
     child: Column(
       children: <Widget>[
              TextField(
                decoration: InputDecoration(
                  hintText: "Search",
                ),
                keyboardType: TextInputType.text,
              ),
              RaisedButton(
                child: Text("Open Drawer"),
                onPressed: () {
                  _scaffoldKey.currentState.openDrawer();
                },
              )
            ],
          ),
        ),
      ),
    );
Другие вопросы по тегам