问题描述
我想将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,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)
嗯。