- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我试图在单击导航栏项目时显示菜单。这是我的尝试:
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: MyAppBar(
title: "Home",
context: context,
),
bottomNavigationBar: BottomNavigationBar(
items: [
BottomNavigationBarItem(
icon: new Icon(Icons.home), title: Text('Home')),
BottomNavigationBarItem(
icon: new Icon(Icons.book), title: Text('Second')),
BottomNavigationBarItem(
icon: new PopupMenuButton(
icon: Icon(Icons.add),
itemBuilder: (_) => <PopupMenuItem<String>>[
new PopupMenuItem<String>(
child: const Text('test1'), value: 'test1'),
new PopupMenuItem<String>(
child: const Text('test2'), value: 'test2'),
],
),
title: Text('more')),
],
currentIndex: 0,
),
body: new Container()));
}
我遇到了两个问题。第一个是 NavigationBarItem 的显示。 icon
和 title
之间有一个我无法删除的填充(即使通过添加 padding: EdgeInsets.all(0.0)
)(如下图显示)。第二个是我需要准确地单击图标才能显示菜单。
当 index=2
的 BottomNavigationBarItem
时,我尝试直接调用 showMenu
(PopupMenuButton
调用的方法) (例如)被点击。但是如何确定菜单应该从哪里出现是很棘手的。
最佳答案
这里尝试直接使用 showMenu
并调用函数 buttonMenuPosition
来获取菜单的位置。它相当脆弱,但您可以将按钮的位置更改到中间,例如使用 bar.size.center
而不是 bar.size.bottomRight
。使用一些 MATH 并通过手动操作 Offset
对象(如果/当您有超过 3 个项目时),您可以更改位置以将菜单放在没有的项目上中心或末端)。
RelativeRect buttonMenuPosition(BuildContext c) {
final RenderBox bar = c.findRenderObject();
final RenderBox overlay = Overlay.of(c).context.findRenderObject();
final RelativeRect position = RelativeRect.fromRect(
Rect.fromPoints(
bar.localToGlobal(bar.size.bottomRight(Offset.zero), ancestor: overlay),
bar.localToGlobal(bar.size.bottomRight(Offset.zero), ancestor: overlay),
),
Offset.zero & overlay.size,
);
return position;
}
@override
Widget build(BuildContext context) {
final key = GlobalKey<State<BottomNavigationBar>>();
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
title: Text("Home"),
),
bottomNavigationBar: BottomNavigationBar(
key: key,
items: [
const BottomNavigationBarItem(
icon: Icon(Icons.home), title: Text('Home')),
const BottomNavigationBarItem(
icon: Icon(Icons.book), title: Text('Second')),
const BottomNavigationBarItem(
icon: Icon(Icons.add), title: Text('more')),
],
currentIndex: 0,
onTap: (index) async {
final position = buttonMenuPosition(key.currentContext);
if (index == 2) {
final result = await showMenu(
context: context,
position: position,
items: <PopupMenuItem<String>>[
const PopupMenuItem<String>(
child: Text('test1'), value: 'test1'),
const PopupMenuItem<String>(
child: Text('test2'), value: 'test2'),
],
);
}
},
),
body: Container()));
}
关于dart - Flutter - 在 BottomNavigationBar 中显示一个 PopupMenuButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53337506/
我有以下正常工作的代码: import 'package:flutter/material.dart'; import 'screen_curiosities.dart'; import 'scree
我在我的应用程序中集成了底部栏导航栏。但是当我滑动时,选项卡的颜色不会改变。这很奇怪,因为我有选择器文件。有解决这个问题的想法吗? Activity.java BottomNavigationView
我想在 BottomNavigationBar 的元素被点击后的一段时间内禁用与它的交互。 我尝试使用 AbsorbPointer 来做到这一点: int _bottomBarIndex = 0;
我正在构建一个在底部导航栏中包含 3 个项目的应用。当我更改选项卡时,会呈现一个不同的小部件。到目前为止,还不错... import 'package:flutter/material.dart';
是的,我的问题是这个。我该怎么做? 我做了一个 BottomNavigationBar,但它看起来像这样。 我的代码是这样的: bottomNavigationBar: BottomNavigatio
我试图弄清楚如何在 BottomNavigationBar 的顶部添加一条非常微妙的黑线,使其开始与其余内容更加不同。 AirBnb 就是一个很好的例子。 有没有办法用 Flutter 实现这一点?
我有一个带有 BottomNavigationBar 的 Android 应用程序,横向模式下有四个菜单项。这些项目像这样在中间聚集在一起: 我想让它们像这样均匀地分布在导航栏上: 如何完成这种格式化
在我的应用程序中,我创建了一个带有 LinearLayout 的自定义 bottomNavigationView。 但我遇到了一个问题,当虚拟键盘出现时,我的自定义 navigationView 并没
我正在使用来自 here 的 BottomNavigationBar .我仔细按照每条说明进行操作,它工作正常,直到我遇到这个问题,即图标从屏幕上弹出,并且它们之间的间隙太大。 Menu_items.
目标: 1) 使状态栏透明 - 完成 2) 使BottomNavigationView 和Navbar 颜色相同。 - 几乎完成 问题 通过在我的 Activity 中添加以下代码,状态栏变得透明。但
我在 flutter 上工作,我制作了一个有 5 个标签的应用程序,使用 BottomNavigationBar,它改变了当前显示的内容。当我点击一个选项卡时,内容会更新为新内容,但选项卡图标不会改变
我在我的 flutter 应用程序中使用 BottomNavigationBar。这是存在 View : 但我需要在项目之间添加分隔符。像这样: 这可能吗?有没有简单的方法来实现这个? 最佳答案 可以
我们可以使用 AppBar 小部件添加标题。 class HomePage extends StatelessWidget { @override Widget build(BuildCont
我正在制作一个带有标签栏的简单应用。我需要将底部导航栏的背景颜色更改为蓝色。应用程序的其余部分应为白色背景,导航栏应为蓝色背景。我该怎么做?在 ThemeData 中设置 canvasColor 无效
我用了bmnav到底部导航栏的实现。这是我的实现。 主.dart class MainWidgetState extends State { @override void initState
我无法让顶部 TabBar 在我的 BottomNavigationBar 中呈现。我只希望顶部 TabBar 显示在首页 BottomNavigationBarItem 内。我知道我可以在主页中设置
我正在用 flutter 创建我的第一个应用,但我遇到了状态管理方面的问题。我有一个带有 BottomNavigationBar 和 body: 带有 tabPages[MainTab, ...] 的
我将 BottomNavigationBar 与 TabController 一起使用。通过单击 BottomNavigationBar 的不同选项卡,TabView 正在更改内容。但是,如果我在 T
我们如何禁用连接到脚手架的 BottomNavigationBar 上的滑动? 我在官方文档中找不到这样做的方法。 最佳答案 明白了: 就用 physics: const NeverScrollabl
我正在尝试更改 BottomNavigation 图标的选定颜色,但我似乎要实现的只是更改文本颜色。请协助: 目前,选中时文本颜色变为黄色,但图标保持白色,我也希望它是黄色的,并且我尝试将非事件图标的
我是一名优秀的程序员,十分优秀!