柚子快報(bào)激活碼778899分享:Flutter 空安全的糖果罐
柚子快報(bào)激活碼778899分享:Flutter 空安全的糖果罐
屏幕適配
Adaptation,用于屏幕適配的組件,你只需要設(shè)置設(shè)計(jì)稿的寬度,其他的尺寸直接按照設(shè)計(jì)稿填寫即可。當(dāng)然這種適配方式其實(shí)是不推薦的,正如作者所言。
用戶使用更大的屏幕是為了接收更多的信息, 而不是看到更大的字
基于這個(gè)觀點(diǎn), 我個(gè)人建議使用文字流式, 圖片寬高比, 控件彈性的方案來(lái)做
但是很多初學(xué)者對(duì)于這個(gè)原則很難把握, 而等比例放大比較容易理解, 所以我寫了這個(gè)庫(kù)
import ‘package:adaptation/adaptation.dart’; MaterialApp( title: ‘Flutter Demo’, theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: MyHomePage(title: ‘Flutter Demo Home Page’), builder: (context, widget) { return Adaptation( child: widget, designWidth: 375, // 你的設(shè)計(jì)稿寬度 ); }, );
資源文件生成
assets_generator,用于自動(dòng)生成 assets 配置 (yaml) 以及 consts 的工具,支持單項(xiàng)目和多模塊。
-h, --[no-]help 顯示幫助信息 -p, --path Flutter 項(xiàng)目的根路徑 (默認(rèn) “.”) -f, --folder assets 文件夾的名字 (默認(rèn) “assets”) -w, --[no-]watch 是否繼續(xù)監(jiān)聽(tīng) assets 的變化 (默認(rèn) 開(kāi)啟) -t, --type pubsepec.yaml 生成配置的類型 “d” 代表以文件夾方式生成 “- assets/images/” “f” 代表以文件方式生成 “- assets/images/xxx.jpg” (默認(rèn) “d”) -s, --[no-]save 是否保存命令到本地 如果執(zhí)行 “agen” 不帶任何命令,將優(yōu)先使用本地的命令進(jìn)行執(zhí)行 -o, --out const 類放置的位置 (默認(rèn)放置在 “l(fā)ib” 下面) -r, --rule consts 的名字的命名規(guī)范 “l(fā)wu”(小寫帶下劃線) : “assets_images_xxx_jpg” “uwu”(大寫帶下劃線) : “ASSETS_IMAGES_XXX_JPG” “l(fā)cc”(小駝峰) : “assetsImagesXxxJpg” (默認(rèn) “l(fā)wu”) -c, --class const 類的名字 (默認(rèn) “Assets”) –const-ignore 使用正則表達(dá)式忽略一些const(不是全部const都希望生成)
圖片
ExtendedImage,集眾多功能為一體的圖片組件,包括以下主要功能:
緩存網(wǎng)絡(luò)圖片 加載狀態(tài)(正在加載,完成,失敗) 拖拽縮放圖片 圖片編輯(裁剪,旋轉(zhuǎn),翻轉(zhuǎn)) 圖片預(yù)覽(跟微信掘金一樣) 滑動(dòng)退出效果(跟微信掘金一樣) 設(shè)置圓角,邊框 支持進(jìn)度顯示 圖片預(yù)覽上滑顯示詳情(跟圖蟲一樣) 減少內(nèi)存占用
列表擴(kuò)展
ExtendedList,針對(duì)官方 Listview 和 GirdView 做的擴(kuò)展組件,包括以下主要功能:
監(jiān)聽(tīng)元素回收 監(jiān)聽(tīng) Viewport 中元素變化 為最后一個(gè)元素設(shè)置特殊布局 列表倒序特殊布局,類聊天列表
嵌套滾動(dòng)視圖擴(kuò)展
ExtendedNestedScrollView,主要解決官方 NestedScrollView 存在的2個(gè)問(wèn)題。
解決 NestedScrollView 的 Header 中不能處理多個(gè) pinned 為 true 的元素的問(wèn)題。github.com/flutter/flu… 解決 NestedScrollView 的 Body 中列表滾動(dòng)會(huì)互相影響的問(wèn)題。github.com/flutter/flu…
Sliver 擴(kuò)展
ExtendedSliver,對(duì) Sliver 組件的擴(kuò)展,主要包括以下功能:
SliverPinnedPersistentHeader,跟官方的SliverPersistentHeader(pinned: true) 一樣的效果, 不同的是你不需要去設(shè)置 minExtent 和 maxExtent。因?yàn)榇蟛糠謭?chǎng)景下面,我們是無(wú)法提前知道 minExtent 和 maxExtent。 SliverPinnedToBoxAdapter,可以通過(guò)它輕松創(chuàng)建一個(gè)置頂?shù)脑?,?dāng) child 沒(méi)有 layout 之前,你沒(méi)法知道 child 的實(shí)際大小,這將是非常有用的組件。 ExtendedSliverAppbar,你可以創(chuàng)建一個(gè)跟 SliverAppbar 一樣效果的組件,而不用去關(guān)心 expandedHeight 。
TabBarView 擴(kuò)展
ExtendedTabs,對(duì) TabBarView 組件的擴(kuò)展,主要包括以下功能:
解決多級(jí) TabBarView 嵌套的時(shí)候,無(wú)法連貫切換的問(wèn)題 垂直方向滾動(dòng) 設(shè)置緩存頁(yè)面數(shù)量 提供 CarouselIndicator 和 ColorTabIndicator
文本
ExtendedText,針對(duì) Text 組件的擴(kuò)展,主要包括以下功能:
方便快速生成特殊文本,將字符串轉(zhuǎn)換成特定的 InlineSpan。 BackgroundTextSpan 自定文字背景,處理圓角或者中英文背景高度不一致的問(wèn)題。 ExtendedWidgetSpan 支持選擇和復(fù)制, github.com/flutter/flu… . TextOverflowWidget 自定義文本溢出效果, github.com/flutter/flu… 。
輸入框
ExtendedTextField,針對(duì) TextField 組件的擴(kuò)展,主要包括以下功能:
方便快速生成特殊文本,原理很簡(jiǎn)單,就是把字符串轉(zhuǎn)換成特定的 InlineSpan。 ExtendedWidgetSpan 支持輸入框中插入任何 Widget,比如表情圖片。 ExtendedWidgetSpan 支持選擇和復(fù)制, github.com/flutter/flu… 。
路由注解
ff_annotation_route,通過(guò)注解生成路由映射,統(tǒng)一處理路由,支持 Navigator 1.0 和 Navigator 2.0。
激活工具 pub global activate ff_annotation_route增加引用
dependencies:
在子模塊中引入
ff_annotation_route_core: any
在根項(xiàng)目引入,包括一些幫助類以及 ff_annotation_route_core
ff_annotation_route_library: any
添加注釋
工具會(huì)自動(dòng)處理帶參數(shù)的構(gòu)造,不需要做特殊處理。唯一需要注意的是,你需要設(shè)置 argumentImports 來(lái)為 class/enum 的參數(shù)提供 import 地址?,F(xiàn)在你也可以使用 @FFArgumentImport() 注釋來(lái)替代.
@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:
factory TestPageE.required({@required TestMode testMode}) => TestPageE( testMode: testMode, );
final TestMode testMode; final TestMode1 testMode1; }
執(zhí)行命令生成路由,ff_route
-h, --[no-]help 幫助信息。
-p, --path 執(zhí)行命令的目錄,默認(rèn)當(dāng)前目錄。
-o, --output route 和 helper 文件的輸出目錄路徑,路徑相對(duì)于主項(xiàng)目的 lib 文件夾。
-n, --name 路由常量類的名稱,默認(rèn)為 Routes。
-g, --git 掃描 git 引用的 package,你需要指定 package 的名字,多個(gè)用 , 分開(kāi) –routes-file-output routes 文件的輸出目錄路徑,路徑相對(duì)于主項(xiàng)目的lib文件夾 –const-ignore 使用正則表達(dá)式忽略一些const(不是全部const都希望生成) –[no-]route-constants 是否在根項(xiàng)目中的 xxx_route.dart 生成全部路由的靜態(tài)常量 –[no-]package 這個(gè)是否是一個(gè) package –[no-]supper-arguments 是否生成路由參數(shù)幫助類
-s, --[no-]save 是否保存命令到本地。如果保存了,下一次就只需要執(zhí)行 ff_route 就可以了。 –[no-]null-safety 是否支持空安全,默認(rèn) true
設(shè)置 MaterialApp 的 onGenerateRoute 回調(diào)
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, )); }, ); }, ); } }
打開(kāi)一個(gè)頁(yè)面
Navigator.pushNamed( context, Routes.flutterCandiesTestPageE.name, arguments: Routes.flutterCandiesTestPageE.requiredC( testMode: const TestMode( id: 100, isTest: true, ), ), );
可拖拽容器
DraggableContainer,可拖拽容器,支持元素移動(dòng)動(dòng)畫效果,主要包括以下功能:
可拖動(dòng)子元素 可刪除子元素 可固定子元素 元素移動(dòng)動(dòng)畫效果
圖片編輯
ImageEditor,強(qiáng)大的原生圖片處理庫(kù),主要包括以下功能:
裁剪 翻轉(zhuǎn) 旋轉(zhuǎn) 縮放 色彩矩陣變化 添加文字 混合圖片 添加任意圖形
Dialog
SmartDialog,一種更優(yōu)雅的Dialog 解決方案,主要解決了系統(tǒng)自帶的Dialog的一些問(wèn)題:
必須傳 BuildContext。 無(wú)法穿透暗色背景,點(diǎn)擊 Dialog 后面的頁(yè)面。 解決系統(tǒng)自帶 Dialog 寫成的 Loading 彈窗,在網(wǎng)絡(luò)請(qǐng)求和跳轉(zhuǎn)頁(yè)面的情況,會(huì)存在路由混亂的情況。
資源選擇器
AssetPicker,對(duì)標(biāo)微信的多選資源選擇器,99%接近于原生微信的操作,主要包括以下功能:
?? 支持基于代理重載的全量自定義 ? 99% 的微信風(fēng)格 ? 圖片資源支持 ?HEIC 格式圖片支持 ? 視頻資源支持 ? 音頻資源支持 1?? 單資源模式 ? 國(guó)際化支持 ? 特殊 widget 構(gòu)建支持(前置/后置) ? 自定義路徑排序支持 ? 自定義文本構(gòu)建支持 ? 自定義篩選規(guī)則支持( photo_manager ) ? 完整的自定義主題 ? 支持 MacOS
相機(jī)資源選擇器
CameraPicker,對(duì)標(biāo)微信的視頻資源選擇器,99%接近于原生微信的操作,主要包括以下功能:
? 支持健全的空安全 ? 99% 的微信風(fēng)格 ? 支持拍照 ?? 支持設(shè)置曝光參數(shù) ?? 支持捏合縮放 ? 支持錄像 ? 支持限制錄像時(shí)間 ? 支持錄像時(shí)縮放 ? 支持自定義前景 widget 構(gòu)建
JsonToDart
JsonToDart,強(qiáng)大的 JsonToDart 工具,主要包括以下功能:
空安全 編輯類名,屬性名 去重復(fù)類 Merge 類屬性 數(shù)據(jù)數(shù)組保護(hù) 屬性命名規(guī)范化,只讀,排序 國(guó)際化 全平臺(tái) 智能可空
平臺(tái)描述地址WindowsFlutter for Windowsgitee.com/zmtzawqlp/J…MacosFlutter for Macosgitee.com/zmtzawqlp/J…WebFlutter for Webzmtzawqlp.gitee.io/jsontodart/微軟商店功能未同步,以后會(huì)替換成 Flutter for UWPwww.microsoft.com/store/apps/…
點(diǎn)贊按鈕
LikeButton,仿推特點(diǎn)贊效果,支持?jǐn)?shù)字動(dòng)畫效果。
增量加載列表
LoadingMoreList,支持各種布局的增量加載列表,主要包括以下功能:
ListView GridView 瀑布流 多個(gè) Sliver 布局 自定義加載狀態(tài) UI 監(jiān)控進(jìn)入 Viewport 元素 類聊天列表布局 監(jiān)控元素回收
下拉刷新
PullToRefreshNotification,靈活的自定義下拉刷新組件,可以創(chuàng)造出任意的下拉刷新樣式。
底部擴(kuò)散模糊動(dòng)畫
RippleBackdropAnimatePage,騷氣十足的模糊動(dòng)畫,只需要幾行代碼就能幫你實(shí)現(xiàn)。
彈出菜單
WPopupMenu,目前最好用的仿微信聊天長(zhǎng)按彈出框。
瀑布流
WaterfallFlow,高性能的瀑布流布局,github.com/flutter/flu… 。
高性能 易上手,跟 GridView 一樣的 api 可監(jiān)控進(jìn)入 Viewport 元素 可監(jiān)控元素回收
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)初中級(jí)Android工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則近萬(wàn)的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Android移動(dòng)開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Android開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以掃碼獲取?。。▊渥ⅲ篈ndroid)
文末
對(duì)于很多初中級(jí)Android工程師而言,想要提升技能,往往是自己摸索成長(zhǎng),不成體系的學(xué)習(xí)效果低效漫長(zhǎng)且無(wú)助。 整理的這些架構(gòu)技術(shù)希望對(duì)Android開(kāi)發(fā)的朋友們有所參考以及少走彎路,本文的重點(diǎn)是你有沒(méi)有收獲與成長(zhǎng),其余的都不重要,希望讀者們能謹(jǐn)記這一點(diǎn)。
最后想要拿高薪實(shí)現(xiàn)技術(shù)提升薪水得到質(zhì)的飛躍。最快捷的方式,就是有人可以帶著你一起分析,這樣學(xué)習(xí)起來(lái)最為高效,所以為了大家能夠順利進(jìn)階中高級(jí)、架構(gòu)師,我特地為大家準(zhǔn)備了一套高手學(xué)習(xí)的源碼和框架視頻等精品Android架構(gòu)師教程,保證你學(xué)了以后保證薪資上升一個(gè)臺(tái)階。
當(dāng)你有了學(xué)習(xí)線路,學(xué)習(xí)哪些內(nèi)容,也知道以后的路怎么走了,理論看多了總要實(shí)踐的。
進(jìn)階學(xué)習(xí)視頻
附上:我們之前因?yàn)榍镎惺占亩滓欢€互聯(lián)網(wǎng)公司Android面試真題?(含BAT、小米、華為、美團(tuán)、滴滴)和我自己整理Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識(shí)點(diǎn)、Android擴(kuò)展知識(shí)點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識(shí)點(diǎn)、常見(jiàn)算法題匯總。)
《互聯(lián)網(wǎng)大廠面試真題解析、進(jìn)階開(kāi)發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實(shí)戰(zhàn)項(xiàng)目源碼講義》點(diǎn)擊傳送門即可獲??!
,所以為了大家能夠順利進(jìn)階中高級(jí)、架構(gòu)師,我特地為大家準(zhǔn)備了一套高手學(xué)習(xí)的源碼和框架視頻等精品Android架構(gòu)師教程,保證你學(xué)了以后保證薪資上升一個(gè)臺(tái)階。
當(dāng)你有了學(xué)習(xí)線路,學(xué)習(xí)哪些內(nèi)容,也知道以后的路怎么走了,理論看多了總要實(shí)踐的。
進(jìn)階學(xué)習(xí)視頻
[外鏈圖片轉(zhuǎn)存中…(img-Ma8QGlpg-1713312817695)]
附上:我們之前因?yàn)榍镎惺占亩滓欢€互聯(lián)網(wǎng)公司Android面試真題?(含BAT、小米、華為、美團(tuán)、滴滴)和我自己整理Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識(shí)點(diǎn)、Android擴(kuò)展知識(shí)點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識(shí)點(diǎn)、常見(jiàn)算法題匯總。)
[外鏈圖片轉(zhuǎn)存中…(img-8q5DU6io-1713312817695)]
《互聯(lián)網(wǎng)大廠面試真題解析、進(jìn)階開(kāi)發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實(shí)戰(zhàn)項(xiàng)目源碼講義》點(diǎn)擊傳送門即可獲??!
柚子快報(bào)激活碼778899分享:Flutter 空安全的糖果罐
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。