首页 > 其他分享 >Flutter笔记:Widgets Easier组件库-使用隐私守卫

Flutter笔记:Widgets Easier组件库-使用隐私守卫

时间:2024-05-23 20:56:15浏览次数:30  
标签:组件 const Flutter widgets https Widgets Easier 页面

Flutter笔记
Widgets Easier组件库:使用隐私守卫

- 文章信息 -
Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: [email protected].
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/139061840
HuaWei:https://bbs.huaweicloud.com/blogs/427696

组件库地址


【介绍】:本文介绍Flutter Widgets Easier组件库中隐私守卫及其用法。

flutter-ljc

目 录


1. 概述

1.1 关于Widgets Easier

本库是一个 Flutter 组件库,旨在提供用于Flutter开发的组件,使得开发者能够更简单地构建出更丰富地界面效果。项目地址为:

1.2 模块安装

在你的Flutter项目中,运行下面的命令:

flutter pub add widgets_easier

即可安装最新版本的 Widgets Easier 库。

2. 隐私守卫

隐私保护组件PrivacyGuard用于保护一些页面信息不被截屏和泄露。在一些场景下,我们需要对页面做一些保护处理。比如用户输入密码时,我系需要禁止截屏录屏,而用户离开页面时,也可能需要对页面实现一个模糊化的效果。这是比价常用的功能,但是对话禁止录屏等操作Flutter没有直接的接口,每次都些通信实现这样一个简单组件比较麻烦。因此widgets Easier 针对于AndroidiOS进行了封装,直接以单子部件的形式提供使用。PrivacyGuard部件的签名如下:

const PrivacyGuard({
  super.key,
  required this.child, // 被保护的子组件
  this.blurRadius = 10.0, // 模糊半径
  this.blurColor = const Color.fromARGB(136, 225, 225, 225), // 模糊颜色
  this.onEnterPrivacyMode, // 离开页面时的回调
  this.onExitPrivacyMode, // 回到页面时的回调
  this.preventScreenshot = false, // 是否禁止截屏
});

下面的代码展示了一个被PrivacyGuard所守卫的登录页面:

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

class GuardedPage extends StatelessWidget {
  const GuardedPage({super.key});

  @override
  Widget build(BuildContext context) {
    return PrivacyGuard(
      preventScreenshot: true,
      onEnterPrivacyMode: () => print('onEnterPrivacyMode'),
      onExitPrivacyMode: () => print('onExitPrivacyMode'),
      child: SafeArea(
        child: Scaffold(
          appBar: AppBar(
            title: const Text('登录页面'),
          ),
          body: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  const Text(
                    '守卫登录页',
                    style: TextStyle(
                      fontSize: 24.0,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                  const SizedBox(height: 32.0),
                  const TextField(
                    decoration: InputDecoration(
                      labelText: '账户',
                      border: OutlineInputBorder(),
                    ),
                  ),
                  const SizedBox(height: 16.0),
                  const TextField(
                    decoration: InputDecoration(
                      labelText: '密码',
                      border: OutlineInputBorder(),
                    ),
                    obscureText: true,
                  ),
                  const SizedBox(height: 16.0),
                  ElevatedButton(
                    onPressed: () {
                      // 登录逻辑
                    },
                    child: const Text('登录'),
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

页面的大致效果如下:

在这里插入图片描述

在这里插入图片描述

3. 问题报告和代码贡献

问题报告

您可以在该项目的 GitHub 页面上提供反馈或报告问题。如果您觉得这个库缺少某个功能,请创建一个功能请求。在提交前,请先检查是否已又类似问题。

代码贡献

请将此仓库Fock到您的账户中,修改后rebase再PR到dev分支。建议提交信息格式为:

type(scope): info about commit.

标签:组件,const,Flutter,widgets,https,Widgets,Easier,页面
From: https://blog.csdn.net/qq_28550263/article/details/139061840

相关文章

  • Flutter 交互组件
    目录前言fluttertoast8.2.5flutter_smart_dialog快速开始Flutter原生组件总结前言现在主流的交互方式是Toast和Dialog。细分下来就是messageinfosuccesserrorwarningloadingconfriminputselect这么多组件,纯自己手写肯定是不可能的,我个人的学习逻辑是能用框架就......
  • Flutter 学习笔记:再次重新学习Flutter
    目录前言相关链接环境安装常见问题环境编译成功分析项目程序入口Wiget动态更新按照教程初始化项目弱化Flutter编译检查添加第一个按钮快速嵌套组件化数据更新:ChangeNotifier和StatefulWidgetDart中的委托修改好的代码运行效果总结前言作为一个开发了一年多的Uniapp的.NET开发工......
  • flutter 定时器
    Timer?_timer;varperiodicTime="".obs;initTimer({requiredintcreateTime,requiredintduration})async{_timer=Timer.periodic(constDuration(seconds:1),(timer)async{DateTimecurrentTime=DateTime.now();varnow=(currentT......
  • flutter动画— —Hero +photo_view 实现微信朋友圈图片预览
    photo_view预览单张图片依赖photo_view:^0.14.0#微信图片单张图片的预览//PhotoView(//imageProvider://NetworkImage(widget.arguments["imageUrl"]),//)classHeroPageextendsStatefulWidget{finalMaparguments;constHeroPage({super.key,req......
  • flutter动画— —Hero 动画
    Hero动画Hero动画的使用微信朋友圈点击小图片的时候会有一个动画效果到大图预览,这个动画效果就可以使用Hero动画实现。Hero指的是可以在路由(页面)之间“飞行”的widget,简单来说Hero动画就是在路由切换时,有一个共享的widget可以在新旧路由间切换。 页面跳转......
  • flutter 运行ios真机测试 提示 Command PhaseScriptExecution failed with a nonzero
    我这边引起CommandPhaseScriptExecutionfailedwithanonzeroexitcode的原因是我刚更换了推送证书,于是我打开钥匙串访问发现推送证书处于不受信任状态,于是把证书状态设置为信任状态并删除了旧的推送证书,设置完成后再去运行,就可以成功运行了。这是我这边的单一情况,......
  • flutter开发项目编译失败依赖冲突的解决方法dependency_overrides
    1.问题在复杂的稍等大点的flutter项目当中,依赖各种第三方框架是很正常,而且也有有很多依赖的,但有时难免存在不同的框架刚好使用了同一个依赖库的不同版本,特别是依赖了系统的某个库的不同版本这个时候就难免会出现同一个依赖库不同版本冲突的编译失败问题2.现象Becauseflut......
  • flutter控件之Text属性的意思
    constText(Stringthis.data,{super.key,this.style,this.strutStyle,this.textAlign,this.textDirection,this.locale,this.softWrap,this.overflow,@Deprecated('UsetextScalerinstead.''UseoftextScaleFactorwasdeprecatedinprepar......
  • flutter开发ios15出现name = 'io.flutter.1.raster', stop reason = signal SIGABRT崩
    1.问题描述为了适应ios上架要求,我们项目升级了flutter升级到3.19.6的,但是莫名其妙出现了这个崩溃,最关键的是没有关键的崩溃日志,不管是flutter侧还是ios原生侧都看不出哪行代码引起的2.问题排查首先,通过崩溃日志的关键字'io.flutter.1.raster',其实的raster就是光栅化的意思......
  • Flutter开发相关技巧--持续更新
    1.设置Container宽度(占一半以及占满)一半的设置:Container(color:Colors.white,//背景色为白色Zwidth:MediaQuery.of(context).size.width/2,//宽度占一半)还可以减去padding或者margin的宽度width:MediaQuery.of(context).size.width/3-2,//减去线......