flutter - 如何将关键属性添加到还没有它的小部件?
问题描述
我想将 GlobalKey 分配给默认情况下没有“key”属性的小部件。我试图扩展小部件类,添加一个关键属性,但我想不通。(我后来也读到我可能不应该扩展小部件类)。
问题:我需要获取BottomNavigationBarItem小部件的最终渲染位置(不接受 (key:) );为此,我可以分配一个 GlobalKey 并获取小部件的位置/偏移量(我已经做过,除了这些无键小部件之外的其他小部件)
一些简单的 NavigationBar 代码:
return Scaffold(
bottomNavigationBar: new BottomNavigationBar(
key: navbarKey, // ---> NavigationBar has a "key" property
items: [
BottomNavigationBarItem(
// ---> BottomNavBarItem -> I dont have a key property :(
icon: ImageIcon(images/someimg.png")),
title: Text("SomeText")),
BottomNavigationBarItem(.....)
]
),),
那么,我该怎么做呢?
解决方案
虽然我没有成功为 BottomNavigationBarItem 小部件添加一个键,但我发现我可以为它的图标添加一个键!
BottomNavigationBarItem(
icon: ImageIcon(
AssetImage("images/Icon_BottomBar_learning.png"),
key: navbarItemIconKey,
), ),
这有助于我在大致相同的位置上画出我想要画的东西。我现在可以使用这条路径:
return Path()
..addRect(Rect.fromLTWH(0, 0, size.width, size.height))
..addOval(Rect.fromCircle(
center: navbarItemIconKey.currentContext
.findRenderObject()
.paintBounds
.shift(Offset(
navbarItemIconKey.currentContext
.findRenderObject()
.getTransformTo(null)
.getTranslation()
.x,
navbarItemIconKey.currentContext
.findRenderObject()
.getTransformTo(null)
.getTranslation()
.y))
.center,
radius: 40)
嗯。
推荐阅读
- css - 不能溢出:在 flexbox 中滚动内部 div
- sql - TypeORM 还需要第 1 阶段的装饰器吗?
- spring - 如何覆盖 Spring Boot Consul 配置属性?
- reactjs - React 使用历史在新选项卡中打开
- python - 经过这么多故障排除后,我不断收到回溯和 str 回调错误,我似乎无法修复它。Python 通讯录
- snowflake-cloud-data-platform - 雪花 SQL API 日期格式
- javascript - 有没有办法避免在每次状态更新后重置代码?
- javascript - 我正在通过 Ajax 从服务器获取音频文件以获取搜索功能,但在渲染播放器后不播放音频
- python - QTableWidget 信号和槽移动字段
- swift - ios:如何从协调器类 SwiftUi 重新加载 webview