【发布时间】:2021-10-22 21:34:14
【问题描述】:
我想在屏幕上显示一些小部件 onTap() 事件,如下图image。
这是我的代码
在此构建方法是返回Container()。
Container 有一个名为SingleChildScrollView 的孩子,并且它还有一些孩子。
所以我不想在创建新小部件时更改所有子级。
简单地说,在运行的屏幕上看到小部件onTap() 而不会打扰另一个小部件。
class _SettingScreenState extends State<SettingScreen> {
List<Widget> _iconList=[];
List<Widget> _titleList=[];
List<Widget> _settingLIst=[];
@override
void initState() {
super.initState();
for(int i=0;i<5;i++){
_iconList.add(_addInIcon(i));
}
for(int i=0;i<5;i++){
_titleList.add(_addInTitle(i));
}
for(int i=0;i<24;i++){
_settingLIst.add(_addInSetting(i));
}
}
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white
),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
_titleList[0],
_addInSetting(0),
_addInSetting(1),
_titleList[1],
_settingLIst[2],
_settingLIst[3],
_titleList[2],
_settingLIst[4],
_settingLIst[5],
_settingLIst[6],
_settingLIst[7],
_settingLIst[8],
_settingLIst[9],
GestureDetector(
onTap: (){
//open widget over the this screen
},
child: Button(
image: _coverImage(),
width: double.infinity,
height: 50,
alignment: Alignment.center,
fit: BoxFit.fitHeight,
),
),
],
),
),
);
}
}
Ans,在创建新的小部件时是否需要 setState() 来覆盖之前的 Container() 小部件?
因为我们不能改变以前的Container()
在Android-java开发中,我做了什么
onClick()
{
ImageView imageView = new ImageView(this);
Glide.with(getApplicationContext()).load(position).into(imageView);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( Math.round((float) 35 * density), Math.round((float) 35 * density));
imageView.setX(reactionButton.getX());
imageView.setY(reactionButton.getY());
imageView.setLayoutParams(layoutParams);
messageRelativeLayout.addView(imageView);
imageView.bringToFront();
animateReaction(imageView);
}
这意味着每次新的 ImageView 都会添加到树上,无论之前的 ImageView 是否出现。 简单的单击按钮并创建新的 ImageView 并显示在屏幕前面。
这个功能我想在flutter中应用
【问题讨论】:
-
是固定位置可见还是随滚动移动?
-
是的,它将在固定位置,请不要建议 alertDialog,创建的小部件将是一个动画小部件
-
搜索小部件堆栈
-
@M.Nasri 经过几个小时的搜索,比我来这里问的是,我找不到像这样的正确模型