Flutter屏幕锁定插件wn_lock的使用

Flutter屏幕锁定插件wn_lock的使用

WN_LOCK

一款用于Flutter的N宫格锁屏,但你可以发挥更多的创意!它是否能带来你意想不到的功能呢?


最新版本

pubspec.yaml文件中添加以下依赖项:

dependencies:
  wn_lock: ^version

演示

以下是不同样式的锁屏效果展示:

示例1 示例2 示例3

例子

使用示例:

[@override](/user/override)
void initState() {
  super.initState();
  // 初始化控制器
  _lockController = LockController();
  // 添加监听器(建议在dispose时移除)
  _lockController.addListener(_lockListener);
}

[@override](/user/override)
void dispose() {
  super.dispose();
  _lockController.removeListener(_lockListener);
}

// 监听器回调函数
void _lockListener() {
  // 打印用户滑动的点的索引数组
  print('${_lockController.value.offsets}');
}

// 构建锁屏组件
WNLockWidget(
  lineColor: Colors.amber,   // 线条颜色
  lineWidth: 2,              // 线条宽度
  attr: SquareAttr(          // 自定义样式:正方形属性
    length: 5,
    color: Colors.amber,
    width: 2,
  ),
  controller: _lockController, // 控制器
  width: 300,                // 宽度
  height: 400,               // 高度
  row: 5,                    // 行数
  column: 5,                 // 列数
)

参数说明

以下是WNLockWidget的主要参数及其说明:

属性名称 类型 描述 默认值 是否必填
onPanEnd ValueChanged<List> 手指抬起时的结果回调
controller LockController 锁屏控制器
row int 默认行数 3
column int 默认列数 3
attr Attr 绘制属性 CircleAttr
touchInChildScale double 触摸区域占子项的比例 1
width double Widget 宽度 100
height double Widget 高度 100
padding EdgeInsets 内边距
margin EdgeInsets 外边距
lineWidth double 连线宽度 2
lineColor Color 连线颜色 Colors.blueAccent
eachInParentScale double (未来版本实现) 子项在父布局中的占比 0.5

示例代码

以下是完整的示例代码,可直接运行:

import 'package:flutter/material.dart';
import 'package:wn_lock/wn_lock.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  LockController _lockController;

  [@override](/user/override)
  void initState() {
    super.initState();
    _lockController = LockController();
    _lockController.addListener(_lockListener);
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
    _lockController.removeListener(_lockListener);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: WNLockWidget(
          lineColor: Colors.redAccent, // 线条颜色
          lineWidth: 2,                // 线条宽度
          attr: HeartAttr(             // 自定义样式:心形属性
            color: Colors.lightGreen,
            width: 2,
          ),
          controller: _lockController, // 控制器
          width: 300,                  // 宽度
          height: 400,                 // 高度
          row: 7,                      // 行数
          column: 5,                   // 列数
        ),
      ),
    );
  }

  void _lockListener() {
    print('${_lockController.value.offsets}');
  }
}

更多关于Flutter屏幕锁定插件wn_lock的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter屏幕锁定插件wn_lock的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


wn_lock 是一个用于在 Flutter 应用中实现屏幕锁定功能的插件。它可以帮助你创建一个类似于系统锁屏的界面,确保用户在进入应用或特定功能时需要输入密码或进行其他验证。

安装 wn_lock

首先,你需要在 pubspec.yaml 文件中添加 wn_lock 依赖:

dependencies:
  flutter:
    sdk: flutter
  wn_lock: ^1.0.0  # 请使用最新的版本号

然后运行 flutter pub get 来安装依赖。

基本用法

  1. 导入包

    在你的 Dart 文件中导入 wn_lock 包:

    import 'package:wn_lock/wn_lock.dart';
    
  2. 初始化锁屏

    你可以在应用的入口处初始化锁屏。例如,在 main.dart 中:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await WnLock.init();  // 初始化锁屏
      runApp(MyApp());
    }
    
  3. 设置锁屏

    你可以设置一个锁屏界面,并在需要的时候显示它。例如:

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('WnLock Example'),
            ),
            body: Center(
              child: ElevatedButton(
                onPressed: () async {
                  bool isUnlocked = await WnLock.showLockScreen(
                    context,
                    title: 'Enter your PIN',
                    onUnlocked: () {
                      print('Unlocked!');
                    },
                  );
                  if (isUnlocked) {
                    // 解锁后的操作
                  }
                },
                child: Text('Show Lock Screen'),
              ),
            ),
          ),
        );
      }
    }
    
  4. 自定义锁屏界面

    你可以自定义锁屏界面的外观和行为。例如,使用 WnLockConfig 来配置锁屏:

    WnLock.setConfig(WnLockConfig(
      backgroundColor: Colors.black,
      titleStyle: TextStyle(color: Colors.white, fontSize: 20),
      pinLength: 4,
      onPinEntered: (pin) {
        if (pin == '1234') {
          return true;  // 解锁成功
        } else {
          return false; // 解锁失败
        }
      },
    ));
    
  5. 处理解锁事件

    onUnlocked 回调中处理解锁成功后的逻辑:

    await WnLock.showLockScreen(
      context,
      title: 'Enter your PIN',
      onUnlocked: () {
        // 解锁后的操作
        Navigator.push(context, MaterialPageRoute(builder: (context) => HomeScreen()));
      },
    );
回到顶部