Flutter Toast、彈出提示、輕提示

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

效果

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

06

源碼下載

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

尋找fluttertoast

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

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

看到第一條:

01

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

點進去:

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

02

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

同時支持AndroidIOS以及Web. 兼容性很好.

實戰(zhàn)開始

創(chuàng)建項目

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

刪除./test目錄, 因為我們的這個項目只是一個簡單的demo. 不需要測試驅(qū)動開發(fā).

03

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

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實戰(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īng)該相當(dāng)簡潔:

04

引入依賴

./pubspec.yaml中添加依賴:

  fluttertoast: ^4.0.1
05

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

運行IDE的Packages get或者在終端中輸入:

flutter pub get

創(chuàng)建按鈕

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

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);
  },
)

下面會詳細解釋各個參數(shù)的作用, 先運行, 一睹為快!

具體位置如圖:

07

?? 運行項目(因為有新導(dǎo)入的庫, 所以建議先停止, 再重新運行), 點擊"彈出toast"按鈕試試:

06

成功運行.

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

參數(shù) 參數(shù)類型 參數(shù)說明 是否必傳 默認值
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)閉按鈕("×"號) × false
webBgColor String web端 16進制顏色, 比如#00b09b × 漸變色(#00b09b與#96c93d)
webPosition String web端 toast水平位置(left, centerright) × right

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

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

主動隱藏toast

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

在剛才的按鈕下方再添加一個按鈕:

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

如圖:

08

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

09

大功告成

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

源碼下載

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

感謝

結(jié)語

原文鏈接

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容