如何在 Flutter 中使用 GetX 打开侧边栏
How to open a sidebar using GetX in Flutter
在Flutter中看到了打开侧边栏的方法Scaffold.of(context).openDrawer()
。目前我在我的项目中使用 GetX。有没有其他方法可以打开抽屉?非常感谢您的帮助。
对于 Drawer 我们必须使用 Scaffold 并为其提供 darwer widget 并使用脚手架状态的 globalKey 打开抽屉
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
Get.put(Controller());
runApp(GetMaterialApp(home: Home()));
}
class Controller extends GetxController {
var scaffoldKey = GlobalKey<ScaffoldState>();
void openDrawer() {
scaffoldKey.currentState.openDrawer();
}
void closeDrawer() {
scaffoldKey.currentState.openEndDrawer();
}
}
class Home extends GetView<Controller> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
key: controller.scaffoldKey,
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text('Drawer Header'),
decoration: BoxDecoration(
color: Colors.blue,
),
),
ListTile(
title: Text('Item 1'),
onTap: controller.closeDrawer,
)
],
),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: controller.openDrawer,
child: Text('open drawer'),
)
],
)),
);
}
}
在Flutter中看到了打开侧边栏的方法Scaffold.of(context).openDrawer()
。目前我在我的项目中使用 GetX。有没有其他方法可以打开抽屉?非常感谢您的帮助。
对于 Drawer 我们必须使用 Scaffold 并为其提供 darwer widget 并使用脚手架状态的 globalKey 打开抽屉
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
Get.put(Controller());
runApp(GetMaterialApp(home: Home()));
}
class Controller extends GetxController {
var scaffoldKey = GlobalKey<ScaffoldState>();
void openDrawer() {
scaffoldKey.currentState.openDrawer();
}
void closeDrawer() {
scaffoldKey.currentState.openEndDrawer();
}
}
class Home extends GetView<Controller> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
key: controller.scaffoldKey,
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text('Drawer Header'),
decoration: BoxDecoration(
color: Colors.blue,
),
),
ListTile(
title: Text('Item 1'),
onTap: controller.closeDrawer,
)
],
),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: controller.openDrawer,
child: Text('open drawer'),
)
],
)),
);
}
}