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();
},
)
],
),
),
),
);