私はこの質問の方法を使用して、足場の本体をフラッターで変更しています。
Flutter Drawerウィジェット-Scaffold.bodyコンテンツを変更
説明されている方法は完全に機能します。ここで、ユーザーがアイテムの1つをタップした後、引き出しだけを自動的に閉じたいと思います。
Navigator.pop()メソッドを使用してみましたが、ドロワーだけでなく画面全体がポップされます。それは私に完全に黒い画面を残します。
助言がありますか?
正確にNavigator.of(context).pop()
を使用していますか?問題を再現できません。再現するための最小限の例を投稿できますか?
次のコードは期待どおりに機能します。設定ボタンはドロワーをポップしますが、他のボタンはポップしません。
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String text = "Initial Text";
@override
Widget build(BuildContext context) {
return new Scaffold(
drawer: new Drawer(
child: new ListView(
children: <Widget>[
new Container(child: new DrawerHeader(child: new Container())),
new Container (
child: new Column(
children: <Widget>[
new ListTile(leading: new Icon(Icons.info),
onTap:(){
setState((){
text = "info pressed";
});
}
),
new ListTile(leading: new Icon(Icons.save),
onTap:(){
setState((){
text = "save pressed";
});
}
),
new ListTile(leading: new Icon(Icons.settings),
onTap:(){
setState((){
text = "settings pressed";
});
Navigator.of(context).pop();
}
),
]
),
)
],
),
),
appBar: new AppBar(title: new Text("Test Page"),),
body: new Center(child: new Text((text)),
));
}
}
足場キーを作成する
引き出しを閉じる
_scaffoldKey.currentState.openEndDrawer(),
引き出しを開く
scaffoldKey.currentState.openDrawer(),
例
InkWell(
onTap: ()=> widget.scaffoldKey.currentState.openDrawer(),
child: Icon(
Icons.menu,
size: 38,
color: Color(0xFFFFFFFF),
),
),