flutter 将全局坐标转换成组件内坐标

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("#")                                   
      ],
    ),
  );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值