10 個(gè) Flutter 組件推薦 - 2

[圖片上傳失敗...(image-a877c4-1652491399958)]

今天咏连,我們?cè)俅瓮扑] package。我們主要處理用戶界面和圖標(biāo)包箫章,所以... 讓我們?nèi)ズ陀淇斓拈喿x嗤堰!

原文

https://tomicriedel.medium.com/10-flutter-tips-part4-10-season-2-260e23214e3f

正文

swipe_to

https://pub.dev/packages/swipe_to

如果你想給任何小工具添加簡(jiǎn)單的滑動(dòng)手勢(shì),滑動(dòng)到是一個(gè)很好的軟件包钱磅。這個(gè)軟件包的優(yōu)點(diǎn)是用戶不必點(diǎn)擊動(dòng)作,但是當(dāng)滑動(dòng)時(shí)動(dòng)作會(huì)立即執(zhí)行似枕。

這里有一個(gè)例子可以更好地理解它:

[圖片上傳失敗...(image-7ed3ea-1652491399959)]

但是... ... 我怎樣才能將這個(gè)令人難以置信的包集成到我的代碼中呢盖淡?

好吧,這很簡(jiǎn)單:

SwipeTo(
    child: Container(
        padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 8.0),
        child: text('???? Swipe me Left | YOU |Swipe me right ????'),
    ),
    onLeftSwipe: () {.
        print('Callback from Swipe To Left');
    },
    onRightSwipe: () {
        print('Callback from Swipe To Right');
    },
),

看凿歼,一點(diǎn)都不難褪迟,對(duì)吧冗恨?

rename

https://pub.dev/packages/rename

當(dāng)然,你希望你的應(yīng)用程序在發(fā)布之前有一個(gè)很酷的名字味赃。但是掀抹,讓我們面對(duì)現(xiàn)實(shí)吧,如果您為每個(gè)平臺(tái)手動(dòng)執(zhí)行這個(gè)過程心俗,那么這個(gè)過程可能會(huì)非常痛苦傲武。

這就是為什么存在著重命名。這個(gè)包允許你在幾秒鐘內(nèi)在任何平臺(tái)上重命名你的應(yīng)用程序城榛。以下是它的工作原理:

  1. 在命令行中執(zhí)行這個(gè)命令:
pub global activate rename
  1. 現(xiàn)在執(zhí)行這兩個(gè)命令:
pub global run rename --bundleId com.myDomain.myApp
pub global run rename --appname "MyApp"

這兩個(gè)命令的第一個(gè)設(shè)置你的應(yīng)用程序的 BundleId揪利。這是你的領(lǐng)域,只不過是倒過來的狠持。如果你沒有域名土童,把它設(shè)置成你的名字或者你公司的名字。但無論如何工坊,如果這個(gè)域名沒有被占用,那將是有利的敢订。

第二個(gè)命令正確地重命名應(yīng)用程序王污。你會(huì)在你的主屏幕上看到這個(gè)名字,在 iOS 和 Android 或者其他平臺(tái)上楚午。

你可以隨心所欲地更改名字昭齐。

還有更多的可能性,比如只為一個(gè)特定的平臺(tái)重命名一個(gè)應(yīng)用程序矾柜。

Hidable

https://pub.dev/packages/hidable

Hidable 可以讓你在用戶滾動(dòng)時(shí)隱藏任何窗口小部件阱驾。這對(duì)于很多事情都是非常有用的,所以現(xiàn)在我們來看看如何實(shí)現(xiàn)這個(gè)包:

  1. 首先怪蔑,創(chuàng)建一個(gè) ScrollController里覆。
final ScrollController scrollController = ScrollController();

2。現(xiàn)在將 scrollController 作為控制器添加到可滾動(dòng)的小部件中缆瓣。下面是一個(gè) ListView 的例子:

ListView.separated(
// General scroll controller which makes bridge between// This ListView and Hidable widget.
  controller: scrollController,
  itemCount: colors.length,
  itemBuilder: (_, i) => container(
     height: 50,
     color: colors[i].withOpacity(.6),
  ),
  separatorBuilder: (_, __) =>const SizedBox(height: 10),
),

3喧枷。第三步,也是最后一步弓坞,用 Hidable widget 包裝任何組件隧甚。在小部件中,指定 scrollController 作為控制器渡冻∑莅猓可租用小部件還有一些其他屬性。我們現(xiàn)在使用 AppBar 來完成這個(gè)過程族吻。

Hidable(
  controller: scrollController,
  wOpacity:true,// As default it's true.
  size: 56,// As default it's 56.
  child: BottomNavigationBar(...),
),

就是這樣∶苯瑁現(xiàn)在你已經(jīng)成功地實(shí)現(xiàn)了可租用小工具珠增!

Flutter Sticky Header

有時(shí)候你在應(yīng)用程序中滾動(dòng),然后突然間類別卡在屏幕頂部宜雀,這意味著你總是知道你在哪里切平。你有沒有想過在 Flutter 是怎么工作的?不是嗎辐董?好吧悴品,那么無論如何還是閱讀這一部分,因?yàn)樗浅S腥?/p>

如果你還在讀简烘,我會(huì)給你詳細(xì)展示我的意思:

[圖片上傳失敗...(image-7377af-1652491399959)]

我想我們現(xiàn)在都知道我的意思了苔严。

但是我如何在 Flutter 中實(shí)現(xiàn)這個(gè)呢?嗯孤澎,非常簡(jiǎn)單: 帶有 flutter/sticky/header 包届氢。這個(gè)軟件包可以很容易地為你的應(yīng)用程序添加這樣一個(gè)偉大的功能。讓我來告訴你如何在代碼中實(shí)現(xiàn)它:

SliverStickyHeader(
  header: Container(
    height: 60.0,
    color: Colors.lightBlue,
    padding: EdgeInsets.symmetric(horizontal: 16.0),
    alignment: Alignment.centerLeft,
    child: Text(
      'Header #0',
      style:const TextStyle(color: Colors.white),
    ),
  ),
  sliver: SliverList(
    delegate: SliverChildBuilderDelegate(
      (context, i) => ListTile(
            leading: CircleAvatar(
              child: Text('0'),
            ),
            title: Text('List tile #$i'),
          ),
      childCount: 4,
    ),
  ),
);

但是還有其他方法可以實(shí)現(xiàn)類似的東西覆旭,比如使用 sliversticheader.builder退子。

Preload Page View

每個(gè)人都知道 PageViews。它們非常方便型将,甚至可以在 TikTok 上找到(如果它是用 Flutter 建造的)寂祥。但是如果你在 PageView 上有來自服務(wù)器的內(nèi)容呢。當(dāng)用戶進(jìn)入一個(gè)頁(yè)面后七兜,加載的內(nèi)容卻要花費(fèi)很長(zhǎng)的時(shí)間丸凭,這是不好的。這個(gè)問題通過預(yù)加載 _ 頁(yè)面視圖來解決腕铸。正如它的名字所說惜犀,你可以使用這個(gè)包來預(yù)加載任意數(shù)量的頁(yè)面,這樣你就不會(huì)有永恒的加載屏幕狠裹。這個(gè)小部件的實(shí)現(xiàn)非常簡(jiǎn)單虽界,工作原理幾乎和一般的 PageView 小部件一樣:

@override
  Widget build(BuildContext context) {
    return new PreloadPageView.builder(
      itemCount: ..,
      itemBuilder: ..,
      onPageChanged: { (int position) { ...},
      .....
      preloadPagesCount: 3,
      controller: PreloadPageController(),
    );
  }

其實(shí)也沒那么難。

Phosphor Icons

http://phosphoricons.com/

正如開頭提到的涛菠,我們當(dāng)然想談?wù)剤D標(biāo)庫(kù)浓恳。相信我,這個(gè)圖標(biāo)圖書館真是太棒了碗暗。在我看來颈将,這些是迄今為止我見過的最好的圖標(biāo)。最棒的是言疗, phosphoricons.com 上有 5364 個(gè)圖標(biāo)晴圾,有各種各樣的變化。

當(dāng)然噪奄,這只是網(wǎng)站的一個(gè)截圖死姚。

[圖片上傳失敗...(image-b8acf1-1652491399959)]

https://pub.dev/packages/phosphor_flutter

但是... 這整件事和 Flutter 現(xiàn)在有什么關(guān)系人乓?有一個(gè)官方支持的 Flutter 軟件包,它包含了所有磷圖標(biāo)都毒。

在 Flutter 中實(shí)現(xiàn)圖標(biāo)非常簡(jiǎn)單:

Icon(
  PhosphorIcons.pencil,// Pencil Icon
),

就是這樣色罚,現(xiàn)在你的應(yīng)用程序中有了一個(gè)漂亮的鉛筆圖標(biāo)。

[圖片上傳失敗...(image-cdfa02-1652491399959)]

Sliding Clipped Nav Bar

https://pub.dev/packages/sliding_clipped_nav_bar

到目前為止账劲,它幾乎是一個(gè)儀式戳护,我提出了我的 10 個(gè) Flutter 技巧文章導(dǎo)航 Pub 包。今天這篇文章提到了滑動(dòng)滑塊導(dǎo)航欄瀑焦。這個(gè)軟件包為你提供了一個(gè)讓你的應(yīng)用程序?qū)τ脩魜碚f更有趣的好方法腌且。由于其令人難以置信的簡(jiǎn)單的執(zhí)行和美麗的設(shè)計(jì),它是最好的導(dǎo)航 Pub 包之一榛瓮。

但是... ... 說夠了铺董,導(dǎo)航欄和這個(gè)包裝看起來怎么樣?

[圖片上傳失敗...(image-99560b-1652491399959)]

我想你很清楚我為什么這么喜歡這個(gè)包裹禀晓。有這么多的定制可能性和實(shí)現(xiàn)非常簡(jiǎn)單:

return Scaffold(
      body: PageView(
      physics: NeverScrollableScrollPhysics(),
      controller: controller,
...
      ),
      bottomNavigationBar: SlidingClippedNavBar(
        backgroundColor: Colors.white,
        onButtonPressed: (index) {
          setState(() {
            selectedIndex = index;
          });
          controller.animateToPage(selectedIndex,
              duration:const Duration(milliseconds: 400),
              curve: Curves.easeOutQuad);
        },
        iconSize: 30,
        activeColor: Color(0xFF01579B),
        selectedIndex: selectedIndex,
        barItems: [
          BarItem(
            icon: Icons.event,
            title: 'Events',
          ),
          BarItem(
            icon: Icons.search_rounded,
            title: 'Search',
          ),
/// Add more BarItem if you want
        ],
      ),
    );

是的精续,就是這樣。你不需要做其他的事情粹懒。這個(gè)軟件包的 README 文件非常詳細(xì)重付,使您可以非常容易地開始進(jìn)入軟件包。

Battery plus

https://pub.dev/packages/battery_plus

Battery_plus 是一個(gè)由 Flutter 社區(qū)支持的軟件包崎淳,它可以提供關(guān)于電池狀態(tài)的各種信息。它非常容易使用愕把,并且可以用于許多應(yīng)用程序:

// Import package
import 'package:battery_plus/battery_plus.dart';
// Instantiate it
var battery = Battery();
// Access current battery level
print(await battery.batteryLevel);
// Be informed when the state (full, charging, discharging) changes
battery.onBatteryStateChanged.listen((BatteryState state) {
// Do something with new state
});

Freezed

http://pub.dev/packages/freezed

也許你已經(jīng)聽說過這個(gè)包被凍結(jié)了拣凹,但是如果沒有,我現(xiàn)在就向你解釋(因?yàn)樗浅S杏?恨豁。

現(xiàn)在我們假設(shè)您已經(jīng)在 Flutter 中創(chuàng)建了一個(gè)數(shù)據(jù)類嚣镜。正如您可能已經(jīng)注意到的,這里有大量的鍋爐代碼橘蜜,查看這些代碼令人不快菊匿。這就是為什么冰凍被創(chuàng)造出來。使用這個(gè)包计福,您可以創(chuàng)建具有多種可能性的數(shù)據(jù)類跌捆,只需要很少的樣板代碼。

我不會(huì)在這里向您展示如何實(shí)現(xiàn) Freezed象颖,但是 README 文件非常棒佩厚。

end.

祝你今天愉快!


? 貓哥

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末说订,一起剝皮案震驚了整個(gè)濱河市抄瓦,隨后出現(xiàn)的幾起案子潮瓶,更是在濱河造成了極大的恐慌,老刑警劉巖钙姊,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毯辅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡煞额,警方通過查閱死者的電腦和手機(jī)思恐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來立镶,“玉大人壁袄,你說我怎么就攤上這事∶拿剑” “怎么了嗜逻?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)缭召。 經(jīng)常有香客問我栈顷,道長(zhǎng),這世上最難降的妖魔是什么嵌巷? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任萄凤,我火速辦了婚禮,結(jié)果婚禮上搪哪,老公的妹妹穿的比我還像新娘靡努。我一直安慰自己,他們只是感情好晓折,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布惑朦。 她就那樣靜靜地躺著,像睡著了一般漓概。 火紅的嫁衣襯著肌膚如雪漾月。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天胃珍,我揣著相機(jī)與錄音梁肿,去河邊找鬼。 笑死觅彰,一個(gè)胖子當(dāng)著我的面吹牛吩蔑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播填抬,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼哥纫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛀骇,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤厌秒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后擅憔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸵闪,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年暑诸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚌讼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡个榕,死狀恐怖篡石,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情西采,我是刑警寧澤凰萨,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站械馆,受9級(jí)特大地震影響胖眷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霹崎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一珊搀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尾菇,春花似錦境析、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至千埃,卻和暖如春憔儿,著一層夾襖步出監(jiān)牢的瞬間忆植,已是汗流浹背放可。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朝刊,地道東北人耀里。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拾氓,于是被迫代替她去往敵國(guó)和親冯挎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容