Flutter Toast端盆、彈出提示合蔽、輕提示

主流的三種APP反饋形式: toast击敌、snackbar以及dialog. toast通常用于提示用戶一些不那么重要的信息, 會(huì)彈出并顯示文字一段時(shí)間. 時(shí)間一到就會(huì)消失. 相較于snackbardialog, 對屏幕的入侵較少. 身為開發(fā)人員怎能不掌握toast的基本使用? 這篇文章阿航就帶著大家一起探討一下Flutter中的toast.

效果

有圖有真相, 我們來看下我們本次要實(shí)現(xiàn)的最終效果:

06

源碼下載

??在Github碼云上查看本篇文章全部代碼.

尋找fluttertoast

有同學(xué)會(huì)問, 為什么要選擇插件, 不選擇原生呢... 因?yàn)镕lutter沒有我們所需的這種效果! 只有自帶的snackBar!

老樣子, 上pub.dev尋找我們所需的插件, 在搜索框輸入fluttertoast:

看到第一條:

01

99分, 相當(dāng)高的評(píng)分.

點(diǎn)進(jìn)去:

查看最新版本發(fā)布日期和兼容性:

02

一般我們在選擇一款Flutter插件時(shí), 會(huì)先看它的評(píng)分(Flutter官方評(píng)分還是比較嚴(yán)格的). 之后再去看看它的最新日期(如果很久未更新, 可能項(xiàng)目已經(jīng)停止維護(hù)了). 最后再來看看它的兼容性, 是否合乎我們的規(guī)則.

同時(shí)支持AndroidIOS以及Web. 兼容性很好.

實(shí)戰(zhàn)開始

創(chuàng)建項(xiàng)目

創(chuàng)建一個(gè)Flutter項(xiàng)目, 先來清理項(xiàng)目.

刪除./test目錄, 因?yàn)槲覀兊倪@個(gè)項(xiàng)目只是一個(gè)簡單的demo. 不需要測試驅(qū)動(dòng)開發(fā).

03

通過flutter創(chuàng)建的項(xiàng)目的./lib/main.dart會(huì)有很多自帶的注釋, 我們替換整個(gè)文件為:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '阿航的技術(shù)小站 Flutter toast',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter toast實(shí)戰(zhàn)'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[],
        ),
      ),
    );
  }
}

?? 代碼解析: 刪除了多余的注釋, 和部分初始化的按鈕. 添加一些名稱.

?? 運(yùn)行項(xiàng)目, 應(yīng)該相當(dāng)簡潔:

04

引入依賴

./pubspec.yaml中添加依賴:

  fluttertoast: ^4.0.1
05

?? 提示: 一定要注意字符縮進(jìn). 縮進(jìn)不正確會(huì)導(dǎo)致導(dǎo)入失敗!

運(yùn)行IDE的Packages get或者在終端中輸入:

flutter pub get

創(chuàng)建按鈕

回到./lib/main.dart, 在Column內(nèi)添加一個(gè)按鈕:

RaisedButton(
  child: Text("彈出toast"),
  onPressed: (){},
)

該按鈕等下用來觸發(fā)彈出toast

使用fluttertoast

導(dǎo)入fluttertoast:

import 'package:fluttertoast/fluttertoast.dart';

上面創(chuàng)建的按鈕中的onPressed中添加函數(shù), 替換上面的RaisedButton為:

RaisedButton(
  child: Text("彈出toast"),
  onPressed: () {
    Fluttertoast.showToast(
                    msg: "你今天真好看",
                    toastLength: Toast.LENGTH_SHORT,
                    gravity: ToastGravity.BOTTOM,
                    timeInSecForIosWeb: 1,
                    backgroundColor: Colors.black45,
                    textColor: Colors.white,
                    fontSize: 16.0);
  },
)

下面會(huì)詳細(xì)解釋各個(gè)參數(shù)的作用, 先運(yùn)行, 一睹為快!

具體位置如圖:

07

?? 運(yùn)行項(xiàng)目(因?yàn)橛行聦?dǎo)入的庫, 所以建議先停止, 再重新運(yùn)行), 點(diǎn)擊"彈出toast"按鈕試試:

06

成功運(yùn)行.

下面來介紹一下Fluttertoast.showToast的詳細(xì)參數(shù):

參數(shù) 參數(shù)類型 參數(shù)說明 是否必傳 默認(rèn)值
msg String 設(shè)置toast展示的字符串 -
gravity ToastGravity枚舉 設(shè)置toast的展示位置.(Web端僅支持頂部和底部) × ToastGravity.BOTTOM
timeInSecForIosWeb int ios秒數(shù) × 1
bgcolor Color toast背景色 × Colors.black
textcolor Color toast文字顏色 × Colors.white
fontSize float toast文字字體大小 × 16.0
webShowClose bool web端 是否顯示關(guān)閉按鈕("×"號(hào)) × false
webBgColor String web端 16進(jìn)制顏色, 比如#00b09b × 漸變色(#00b09b與#96c93d)
webPosition String web端 toast水平位置(left, centerright) × right

你可以自己隨意傳入?yún)?shù)和值來看看效果!

經(jīng)過阿航的測試, fluttertoast本版本的web端不是非常好看. 所以不放出web端的截圖啦!

主動(dòng)隱藏toast

toast不僅可以自動(dòng)消失, 也可以根據(jù)我們的需要讓其立即消失.

在剛才的按鈕下方再添加一個(gè)按鈕:

RaisedButton(
  child: Text("隱藏toast"),
  onPressed: () => Fluttertoast.cancel(),
)

如圖:

08

?? 運(yùn)行項(xiàng)目, 先點(diǎn)擊"彈出toast"按鈕, 緊接著點(diǎn)擊"隱藏toast`按鈕, 你會(huì)發(fā)現(xiàn)提示立刻消失:

09

大功告成

至此, 我們的教程已經(jīng)基本完成. 如果你對本篇文章有任何問題, 歡迎在下方評(píng)論區(qū)進(jìn)行討論.

源碼下載

??在Github碼云上查看本篇文章全部代碼.

感謝

結(jié)語

原文鏈接

更多技術(shù)干貨, 歡迎訪問阿航的技術(shù)小站

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拴事,一起剝皮案震驚了整個(gè)濱河市沃斤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刃宵,老刑警劉巖衡瓶,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牲证,居然都是意外死亡哮针,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門坦袍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來十厢,“玉大人,你說我怎么就攤上這事捂齐÷牛” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵奠宜,是天一觀的道長包颁。 經(jīng)常有香客問我瞻想,道長,這世上最難降的妖魔是什么娩嚼? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任蘑险,我火速辦了婚禮,結(jié)果婚禮上岳悟,老公的妹妹穿的比我還像新娘漠其。我一直安慰自己,他們只是感情好竿音,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布和屎。 她就那樣靜靜地躺著,像睡著了一般春瞬。 火紅的嫁衣襯著肌膚如雪柴信。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天宽气,我揣著相機(jī)與錄音随常,去河邊找鬼。 笑死萄涯,一個(gè)胖子當(dāng)著我的面吹牛绪氛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涝影,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼枣察,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了燃逻?” 一聲冷哼從身側(cè)響起序目,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伯襟,沒想到半個(gè)月后猿涨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姆怪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年叛赚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽揭。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俺附,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淀衣,到底是詐尸還是另有隱情昙读,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布膨桥,位于F島的核電站蛮浑,受9級(jí)特大地震影響唠叛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沮稚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一艺沼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蕴掏,春花似錦障般、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至即供,卻和暖如春定拟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗嫡。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工青自, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驱证。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓延窜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抹锄。 傳聞我的和親對象是個(gè)殘疾皇子逆瑞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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