要让openEndDrawer()方法响应自定义AppBar按钮,而不是虚构的AppBar按钮,需要进行以下步骤:
以下是一个示例代码,演示如何实现上述功能:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: MyAppBar(),
endDrawer: MyDrawer(),
body: Center(
child: Text('Hello World'),
),
),
);
}
}
class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
@override
Size get preferredSize => Size.fromHeight(kToolbarHeight);
@override
Widget build(BuildContext context) {
return AppBar(
title: Text('My App'),
actions: [
IconButton(
icon: Icon(Icons.menu),
onPressed: () {
Scaffold.of(context).openEndDrawer();
},
),
],
);
}
}
class MyDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
children: [
ListTile(
title: Text('Item 1'),
onTap: () {
// 处理抽屉菜单项的点击事件
},
),
ListTile(
title: Text('Item 2'),
onTap: () {
// 处理抽屉菜单项的点击事件
},
),
],
),
);
}
}
在上述示例代码中,我们创建了一个自定义的AppBar(MyAppBar),其中添加了一个自定义按钮(IconButton),并为按钮添加了点击事件处理函数。在点击事件处理函数中,我们通过Scaffold.of(context).openEndDrawer()调用openEndDrawer()方法来打开抽屉菜单。同时,我们还创建了一个自定义的抽屉菜单(MyDrawer),用于展示抽屉菜单的内容。
请注意,为了能够正确调用openEndDrawer()方法,需要在MyAppBar组件中获取到Scaffold的上下文(context)。可以通过Scaffold.of(context)来获取Scaffold的实例,然后调用openEndDrawer()方法。
希望以上内容能够帮助到你!如果有任何疑问,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云