Flutter 空安全的糖果罐,带你全面掌握高级知识点

-h, --[no-]help 显示帮助信息
-p, --path Flutter 项目的根路径
(默认 “.”)
-f, --folder assets 文件夹的名字
(默认 “assets”)
-w, --[no-]watch 是否继续监听 assets 的变化
(默认 开启)
-t, --type pubsepec.yaml 生成配置的类型
“d” 代表以文件夹方式生成 “- assets/images/”
“f” 代表以文件方式生成 “- assets/images/xxx.jpg”
(默认 “d”)
-s, --[no-]save 是否保存命令到本地
如果执行 “agen” 不带任何命令,将优先使用本地的命令进行执行
-o, --out const 类放置的位置
(默认放置在 “lib” 下面)
-r, --rule consts 的名字的命名规范
“lwu”(小写带下划线) : “assets_images_xxx_jpg”
“uwu”(大写带下划线) : “ASSETS_IMAGES_XXX_JPG”
“lcc”(小驼峰) : “assetsImagesXxxJpg”
(默认 “lwu”)
-c, --class const 类的名字
(默认 “Assets”)
–const-ignore 使用正则表达式忽略一些const(不是全部const都希望生成)

assets_generator.gif

图片

ExtendedImage,集众多功能为一体的图片组件,包括以下主要功能:

  • 缓存网络图片
  • 加载状态(正在加载,完成,失败)
  • 拖拽缩放图片
  • 图片编辑(裁剪,旋转,翻转)
  • 图片预览(跟微信掘金一样)
  • 滑动退出效果(跟微信掘金一样)
  • 设置圆角,边框
  • 支持进度显示
  • 图片预览上滑显示详情(跟图虫一样)
  • 减少内存占用
zoom.gifslide.gifphoto_view.gif
editor.gif9e93eba3cc614ddbb818a3a445a41a99_tplv-k3u1fbpfcp-zoom-1 (1).gif2097626b7d0a406ab769cb528a31388e_tplv-k3u1fbpfcp-zoom-1.gif

列表扩展

ExtendedList,针对官方 ListviewGirdView 做的扩展组件,包括以下主要功能:

  • 监听元素回收
  • 监听 Viewport 中元素变化
  • 为最后一个元素设置特殊布局
  • 列表倒序特殊布局,类聊天列表
gridview.gifchat_list.gif

嵌套滚动视图扩展

ExtendedNestedScrollView,主要解决官方 NestedScrollView 存在的2个问题。

Sliver 扩展

ExtendedSliver,对 Sliver 组件的扩展,主要包括以下功能:

  • SliverPinnedPersistentHeader,跟官方的SliverPersistentHeader(pinned: true) 一样的效果, 不同的是你不需要去设置 minExtentmaxExtent。因为大部分场景下面,我们是无法提前知道 minExtentmaxExtent
  • SliverPinnedToBoxAdapter,可以通过它轻松创建一个置顶的元素,当 child 没有 layout 之前,你没法知道 child 的实际大小,这将是非常有用的组件。
  • ExtendedSliverAppbar,你可以创建一个跟 SliverAppbar 一样效果的组件,而不用去关心 expandedHeight

extended_sliver.gif

TabBarView 扩展

ExtendedTabs,对 TabBarView 组件的扩展,主要包括以下功能:

  • 解决多级 TabBarView 嵌套的时候,无法连贯切换的问题
  • 垂直方向滚动
  • 设置缓存页面数量
  • 提供 CarouselIndicatorColorTabIndicator
link.gifscrollDirection.gif

文本

ExtendedText,针对 Text 组件的扩展,主要包括以下功能:

  • 方便快速生成特殊文本,将字符串转换成特定的 InlineSpan
  • BackgroundTextSpan 自定文字背景,处理圆角或者中英文背景高度不一致的问题。
  • ExtendedWidgetSpan 支持选择和复制, github.com/flutter/flu… .
  • TextOverflowWidget 自定义文本溢出效果, github.com/flutter/flu…
special_text.jpgoverflow.jpg
background.pngselection.gif

输入框

ExtendedTextField,针对 TextField 组件的扩展,主要包括以下功能:

  • 方便快速生成特殊文本,原理很简单,就是把字符串转换成特定的 InlineSpan
  • ExtendedWidgetSpan 支持输入框中插入任何 Widget,比如表情图片。
  • ExtendedWidgetSpan 支持选择和复制, github.com/flutter/flu…
extended_text_field.gif外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
custom_toolbar.gifwidget_span.gif

路由注解

ff_annotation_route,通过注解生成路由映射,统一处理路由,支持 Navigator 1.0Navigator 2.0

  1. 激活工具 pub global activate ff_annotation_route
  2. 增加引用

dependencies:

在子模块中引入

ff_annotation_route_core: any

在根项目引入,包括一些帮助类以及 ff_annotation_route_core

ff_annotation_route_library: any

  1. 添加注释

工具会自动处理带参数的构造,不需要做特殊处理。唯一需要注意的是,你需要设置 argumentImports 来为 class/enum 的参数提供 import 地址。现在你也可以使用 @FFArgumentImport() 注释来替代.

@FFArgumentImport(‘hide TestMode2’)
import ‘package:example1/src/model/test_model.dart’;
@FFArgumentImport()
import ‘package:example1/src/model/test_model1.dart’ hide TestMode3;
import ‘package:ff_annotation_route_library/ff_annotation_route_library.dart’;

@FFRoute(
name: ‘flutterCandies://testPageE’,
routeName: ‘testPageE’,
description: ‘Show how to push new page with arguments(class)’,
// argumentImports are still work for some cases which you can’t use @FFArgumentImport()
// argumentImports: [
// ‘import ‘package:example1/src/model/test_model.dart’;’,
// ‘import ‘package:example1/src/model/test_model1.dart’;’,
// ],
exts: <String, dynamic>{
‘group’: ‘Complex’,
‘order’: 1,
},
)
class TestPageE extends StatelessWidget {
const TestPageE({
this.testMode = const TestMode(
id: 2,
isTest: false,
),
this.testMode1,
});
factory TestPageE.deafult() => TestPageE(
testMode: TestMode.deafult(),
);

factory TestPageE.required({@required TestMode testMode}) => TestPageE(
testMode: testMode,
);

final TestMode testMode;
final TestMode1 testMode1;
}

  1. 执行命令生成路由,ff_route <command> [arguments],全部命令如下:

-h, --[no-]help 帮助信息。

-p, --path 执行命令的目录,默认当前目录。

-o, --output route 和 helper 文件的输出目录路径,路径相对于主项目的 lib 文件夹。

-n, --name 路由常量类的名称,默认为 Routes

-g, --git 扫描 git 引用的 package,你需要指定 package 的名字,多个用 , 分开
–routes-file-output routes 文件的输出目录路径,路径相对于主项目的lib文件夹
–const-ignore 使用正则表达式忽略一些const(不是全部const都希望生成)
–[no-]route-constants 是否在根项目中的 xxx_route.dart 生成全部路由的静态常量
–[no-]package 这个是否是一个 package
–[no-]supper-arguments 是否生成路由参数帮助类

-s, --[no-]save 是否保存命令到本地。如果保存了,下一次就只需要执行 ff_route 就可以了。
–[no-]null-safety 是否支持空安全,默认 true

  1. 设置 MaterialApponGenerateRoute 回调

import ‘package:ff_annotation_route_library/ff_annotation_route_library.dart’;
import ‘package:flutter/material.dart’;
import ‘example_route.dart’;
import ‘example_routes.dart’;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘ff_annotation_route demo’,
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: Routes.fluttercandiesMainpage,
onGenerateRoute: (RouteSettings settings) {
return onGenerateRoute(
settings: settings,
getRouteSettings: getRouteSettings,
routeSettingsWrapper: (FFRouteSettings ffRouteSettings) {
if (ffRouteSettings.name == Routes.fluttercandiesMainpage ||
ffRouteSettings.name ==
Routes.fluttercandiesDemogrouppage.name) {
return ffRouteSettings;
}
return ffRouteSettings.copyWith(
widget: CommonWidget(
child: ffRouteSettings.widget,
title: ffRouteSettings.routeName,
));
},
);
},
);
}
}

  1. 打开一个页面

Navigator.pushNamed(
context,
Routes.flutterCandiesTestPageE.name,
arguments: Routes.flutterCandiesTestPageE.requiredC(
testMode: const TestMode(
id: 100,
isTest: true,
),
),
);

可拖拽容器

DraggableContainer,可拖拽容器,支持元素移动动画效果,主要包括以下功能:

  • 可拖动子元素
  • 可删除子元素
  • 可固定子元素
  • 元素移动动画效果

图片编辑

ImageEditor,强大的原生图片处理库,主要包括以下功能:

  • 裁剪
  • 翻转
  • 旋转
  • 缩放
  • 色彩矩阵变化
  • 添加文字
  • 混合图片
  • 添加任意图形

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Dialog

SmartDialog,一种更优雅的Dialog 解决方案,主要解决了系统自带的Dialog的一些问题:

  • 必须传 BuildContext。
  • 无法穿透暗色背景,点击 Dialog 后面的页面。
  • 解决系统自带 Dialog 写成的 Loading 弹窗,在网络请求和跳转页面的情况,会存在路由混乱的情况。

smartDialog

资源选择器

AssetPicker,对标微信的多选资源选择器,99%接近于原生微信的操作,主要包括以下功能:

  • ♻️ 支持基于代理重载的全量自定义
  • 💚 99% 的微信风格
  • 📷 图片资源支持
  • 🔬HEIC 格式图片支持
  • 🎥 视频资源支持
  • 🎶 音频资源支持
  • 1️⃣ 单资源模式
  • 💱 国际化支持
  • ➕ 特殊 widget 构建支持(前置/后置)
  • 🗂 自定义路径排序支持
  • 📝 自定义文本构建支持
  • ⏳ 自定义筛选规则支持( photo_manager
  • 🎏 完整的自定义主题
  • 💻 支持 MacOS
123
456
789

相机资源选择器

CameraPicker,对标微信的视频资源选择器,99%接近于原生微信的操作,主要包括以下功能:

  • 🔐 支持健全的空安全
  • 💚 99% 的微信风格
  • 📷 支持拍照
  • ☀️ 支持设置曝光参数
  • 🔍️ 支持捏合缩放
  • 🎥 支持录像
  • ⏱ 支持限制录像时间
  • 🔍 支持录像时缩放
  • 🖾 支持自定义前景 widget 构建

JsonToDart

JsonToDart,强大的 JsonToDart 工具,主要包括以下功能:

  • 空安全
  • 编辑类名,属性名
  • 去重复类
  • Merge 类属性
  • 数据数组保护
  • 属性命名规范化,只读,排序
  • 国际化
  • 全平台
  • 智能可空
平台描述地址
WindowsFlutter for Windowsgitee.com/zmtzawqlp/J…
MacosFlutter for Macosgitee.com/zmtzawqlp/J…
WebFlutter for Webzmtzawqlp.gitee.io/jsontodart/
微软商店功能未同步,以后会替换成 Flutter for UWPwww.microsoft.com/store/apps/…

JsonToDart.gif

点赞按钮

LikeButton,仿推特点赞效果,支持数字动画效果。

增量加载列表

LoadingMoreList,支持各种布局的增量加载列表,主要包括以下功能:

  • ListView
  • GridView
  • 瀑布流
  • 多个 Sliver 布局
  • 自定义加载状态 UI
  • 监控进入 Viewport 元素
  • 类聊天列表布局
  • 监控元素回收
listview.gif外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传error.gif
custom_indicator.gifnested_scrollView.gifknown_sized.gif

下拉刷新

PullToRefreshNotification,灵活的自定义下拉刷新组件,可以创造出任意的下拉刷新样式。

appbar.gifheader.gif
image.gifcandies.gif

底部扩散模糊动画

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

ert/5912337446dee53639406fead3d3f03c.jpeg)

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-v1VMPivw-1712951723701)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值