Flutter 自定义手势Widget

Flutter 自定义手势页面


import 'package:flutter/material.dart';

/// 创建自定义手势组件
/// @author wang.kt
/// 

// ignore: must_be_immutable
class GestureUnlockWidget extends StatefulWidget{
   

  GestureWidgetOpts _opts;

  GestureWidgetCallBack _callBack;

  GestureUnlockWidget(this._opts,this._callBack);

  @override
  _GestureUnlockWidgetState createState() => _GestureUnlockWidgetState(this._opts,this._callBack);

}

class _GestureUnlockWidgetState extends State<StatefulWidget>{
   


  GestureWidgetOpts _opts;

  GestureWidgetCallBack _callBack;

  _GestureUnlockWidgetState(this._opts,this._callBack);

  List _imgs  = [0,1,2,3,4,5,6,7,8]; //默认九宫格的id

  List _paths = []; //产生的路径

  bool _validFlag = true; //路径是否有效,默认为有效

  bool _canPaint = true;

  Offset _offset ;
  
  @override
  Widget build(BuildContext context) {
   

    final size = MediaQuery.of(context).size;

    final width = size.width;

    final height = size.height;

    final canvasSize = width > height ? height : width;
    // 0.5 + 1 + 1.5 + 1 + 1.5 + 1 + 0.5 = 7
    final imageSize = canvasSize / 7 ;

    final padding = imageSize / 2;

    //通过
    Image getGestureUnlockImage(int idx){
   
      var imagePath = _opts.normalImage;
      if(_paths.contains(idx)){
   
        imagePath = _validFlag ? _opts.selectedImage : _opts.errorImage;
      }
      return  Image(
        image: AssetImage(imagePath),
        height: imageSize,
      );
    }


    //绘制按钮
    Positioned painterGestureUnlockImage(int idx){
   
      double x = padding;
      double y = padding;
      x +=  (idx % 3)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值