当前位置: 代码网 > it编程>编程语言>Asp.net > Flutter 空安全的糖果罐(2),2024年最新2024国内知名大厂网络安全岗面经

Flutter 空安全的糖果罐(2),2024年最新2024国内知名大厂网络安全岗面经

2024年07月28日 Asp.net 我要评论
ExtendedTabs,对 组件的扩展,主要包括以下功能:ExtendedText,针对 组件的扩展,主要包括以下功能:ExtendedTextField,针对 组件的扩展,主要包括以下功能:ff_annotation_route,通过注解生成路由映射,统一处理路由,支持 和 。dependencies:ff_annotation_route_core: anyff_annotation_route_library: any工具会自动处理带参数的构造,不需要做特殊处理。唯一需要注意的是,你需要设置
  • 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,强大的原生图片处理库,主要包括以下功能:

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

editor.gif

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

底部扩散模糊动画

ripplebackdropanimatepage,骚气十足的模糊动画,只需要几行代码就能帮你实现。

弹出菜单

wpopupmenu,目前最好用的仿微信聊天长按弹出框。

瀑布流

waterfallflow,高性能的瀑布流布局,github.com/flutter/flu…

  • 高性能
  • 易上手,跟 gridview 一样的 api
  • 可监控进入 viewport 元素
  • 可监控元素回收
random_sized.gifcustom_scrollview.gif
known_sized.gifvariable_sized.gif

迁移

指南

感谢 flutter & dart 文档中国本地化 全球遮天团 为我们提供了完整准确的文档,dart.cn/null-safety…空安全 迁移大概有下面几个步骤:

  1. 执行flutter pub outdated --mode=null-safety ,检查自己项目依赖的库是否都支持空安全。

  2. 如果都支持了,执行 dart migrate --apply-changes。不加 --apply-changes 的话,会有一个浏览器地址,你打开之后,可以在浏览器中进行修改。我一般还是习惯在直接 --apply-changes 之后直接在 vscode 中进行修改。执行完毕之后,你的 dart sdk 版本会自动改为大于2.12.0。(注意,执行 dart migrate 命令必须确保 sdk 是小于 2.12.0 的)

environment:
sdk: ‘>=2.12.0 ❤️.0.0’

  1. 工具不是万能的,会有一些 错误,请先查看完 dart.cn/null-safety 之后,根据自己的业务场景对代码进行更正。

问题

空安全对非空 list<t> 的影响是非常大的。

下面我们来跟一波可空列表在做 add 操作时候的流程,来理解下文档所说的意思。

位置
list.dartbin/cache/dart-sdk/lib/collection/list.dart
growable_array.dartbin/cache/dart-sdk/lib/_internal/vm/lib/growable_array.dart
array.dartbin/cache/dart-sdk/lib/_internal/vm/lib/array.dart
  1. listmixin.add (dart:collection/list.dart:278)

// list interface.
void add(e element) {
// this implementation only works for lists which allow null
// as element.
this[this.length++] = element;
}

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

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

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

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

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

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

给大家的福利

零基础入门

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

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

在这里插入图片描述

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

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

同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

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

在这里插入图片描述

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

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

(0)

相关文章:

  • C# 对dll文件的创建、反射、用dnspy软件直接查看与修改原码

    dll文件的创建、反射、用dnspy软件直接查看与编辑,使用C#的反射机制可以动态加载并调用dll文件中的类型和成员。可以使用Assembly类、Type类和MethodInfo类…

    2024年07月28日 编程语言
  • C#编程基础(万字详解,这一篇就够了)

    C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。C# 是由 Anders Hejlsberg 和他的团…

    2024年07月28日 编程语言
  • 八股文(C#篇)

    闭包是指有权访问另一个函数作用域中变量的函数(用lambda或匿名方法实现,可以捕获不属于其作用域的值)通过C#的拓展方法相关知识点进行添加闭包可能会捕获并持有外部作用域变量的引用…

    2024年07月28日 编程语言
  • C# BitConverter

    C# BitConverter

    返回的字符串中每个字节都被表示为一个两位的十六进制数,即使该字节的高四位都是零也会这样表示。在大端字节序中,最重要的字节(高位字节)存储在最低的内存地址处,而最... [阅读全文]
  • C# 与 Qt 的对比分析

    C# 与 Qt 的对比分析

    在软件开发领域,C# 和 Qt 是两种常用的技术栈,它们分别在.NET平台和跨平台桌面应用开发中占据重要位置。本文将深入探讨 C# 相对于 Qt 的一些优势,并... [阅读全文]
  • C# 关于 PaddleOCRSharp OCR识别的疲劳测试

    C# 关于 PaddleOCRSharp OCR识别的疲劳测试

    在实际的运行应用中,我们的档案有共计几千万份图片,由于环境及硬件要求,仅提供了三台配置雷人的台式机,发现运行几小时后,PaddleOCRSharp.dll 运行... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com