概述
1、定义方法
void getChar(BuildContext context,Offset set)
{
RenderBox box=context.findRenderObject();
获得父组件
var local=box.globalToLocal(set);
将屏幕坐标转换成父组件内的坐标
local.dx
获取单独的坐标
}
2、在GestureDetector组件中调用onVerticalDragDown:(x){} ,点击可以获得Offset类型的全局坐标
onVerticalDragDown: (text){
当点击时会获取点击坐标
getChar(context, text.globalPosition);
转换成Offset类型
},
代码示例:
void getChar(BuildContext context,Offset set)
{
RenderBox box=context.findRenderObject();
var local=box.globalToLocal(set);
print(local.dy);
}
----
return GestureDetector(
onVerticalDragDown: (text){ //当点击时会获取点击坐标
getChar(context, text.globalPosition);
},
onVerticalDragEnd: (text){
print(text);
},
onVerticalDragCancel: (){
print("取消");
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.search,size: 15,),
GestureDetector(
child:Text('A') ,
onTap: (){
scroll.animateTo(312, duration: Duration(milliseconds: 200), curve: Curves.easeIn);
},
),
GestureDetector(
child:Text('B') ,
onTap: (){
scroll.animateTo(478, duration: Duration(milliseconds: 200), curve: Curves.easeIn);
},
),
GestureDetector(
child:Text('C') ,
onTap: (){
scroll.animateTo(575, duration: Duration(milliseconds: 200), curve: Curves.easeIn);
},
),
GestureDetector(
child:Text('D') ,
onTap: (){
scroll.animateTo(741, duration: Duration(milliseconds: 200), curve: Curves.easeIn);
},
),
Text('E'),
Text('F'),
Text('G'),
Text('H'),
Text('I'),
Text('J'),
Text('K'),
Text('L'),
Text('M'),
Text('N'),
Text('O'),
Text('P'),
Text('Q'),
Text('R'),
Text('S'),
Text('T'),
Text('U'),
Text('V'),
Text('W'),
Text('X'),
Text("Y"),
Text("#")
],
),
);
最后
以上就是如意紫菜为你收集整理的flutter 将全局坐标转换成组件内坐标的全部内容,希望文章能够帮你解决flutter 将全局坐标转换成组件内坐标所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复