我们如何实现使用onTap或onPressed在PopupMenuItem
这是我的代码:
actions: <Widget>[
PopupMenuButton(
icon: Icon(Icons.settings),
itemBuilder: (context) => [
PopupMenuItem(
child: Text("Settings"),
),
PopupMenuItem(
child: Text("Flutter.io"),
),
PopupMenuItem(
child: Text("Google.com"),
),
],
),
]
Run Code Online (Sandbox Code Playgroud)
我想在点击或单击 Settings PopupMenuItem 时导航到 SettingPage()。
即使在遵循下面提到的解决方案之后,甚至在导入 dart:js 之后,我也会收到此错误
Error: Not found: 'dart:js'
import 'dart:js';
Run Code Online (Sandbox Code Playgroud)
这是我的依赖项:
import 'package:bfdi_app/Profile/editProfile.dart';
import 'package:bfdi_app/models/user.dart';
import 'package:bfdi_app/services/collection.dart';
import 'package:bfdi_app/settings.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'dart:js';
Run Code Online (Sandbox Code Playgroud)
no_*_*ate 20
只需将此添加到您的 PopupMenuButton:
onSelected: (result) {
if (result == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingPage()),
);
}
},
Run Code Online (Sandbox Code Playgroud)
并将您的设置按钮更改为:
PopupMenuItem(
child: Text("Settings"),
value: 0,
),
Run Code Online (Sandbox Code Playgroud)
小智 7
我在使用弹出菜单按钮导航屏幕时遇到了类似的问题,我通过将此方法放入 PopupMenuItem 的 onTap 回调中来解决问题:
onTap: (){
WidgetsBinding.instance!.addPostFrameCallback((_) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return ScreenName();
},
),
);
});
}
Run Code Online (Sandbox Code Playgroud)
有一个名为 的属性onSelected,您应该使用它,它处理onTap事件。
PopupMenuButton(
icon: Icon(Icons.settings),
onSelected: (newValue) { // add this property
setState(() {
_value = newValue; // it gives the value which is selected
});
},
itemBuilder: (context) => [
PopupMenuItem(
child: Text("Settings"),
value: 0,
),
PopupMenuItem(
child: Text("Flutter.io"),
value: 1,
),
PopupMenuItem(
child: Text("Google.com"),
value: 2,
),
],
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8778 次 |
| 最近记录: |