LoginSignup
3
1

More than 3 years have passed since last update.

Flutter toast プラグイン選定(2019/07/20)

Last updated at Posted at 2019-07-20

Screenshot_1563616909.png

注意

webエンジニアが片手間でflutterでくだらないアプリを作成したときの備忘録です。
アプリのガイドラインに沿わない情報もあるかもですがご容赦ください。

2019/07/18時点でのToast pluginの種類

pub.devでtoastで検索すると上位に上記4種類が出てくる。
flutter_just_toastはもう半年以上更新がないのでやめておいたほうが良い。
手軽に使えるのはtoast/fluttertoast、カスタマイズ性が一番高いのはoktoastである。

結論としてoktoastを採用した。

今回は備忘録のために、採用理由と簡単な使い方を記す。

採用理由

要件として以下のものがあった。

  • 利用できる画面に制限がない
  • 画面ごとに出せる
  • 連続で表示したかったので、できる限り表示時間を短くしたい
  • fontのカスタマイズをしたい

toast/fluttertoastは上2つの要件は満たしているが、

  • 表示時間はshort/longの2値からしか選べない
  • fontに関しては色、サイズしか選べない

という仕様であるため、採用にはならなかった。
逆に言うとシンプルにtoastを実装したいならtoast/fluttertoastの方が良いだろう。

使い方(fluttertoast vs oktoast)

各How to Useより抜粋

fluttertoast

import 'package:fluttertoast/fluttertoast.dart';

class _okToastExampleState extends State<okToastExample> {
  @override
  void initState() {
    super.initState();
  }

  showToast() {
    Fluttertoast.showToast(
      msg: "This is Center Short Toast",
      toastLength: Toast.LENGTH_SHORT,
      gravity: ToastGravity.CENTER,
      timeInSecForIos: 1,
      backgroundColor: Colors.red,
      textColor: Colors.white,
      fontSize: 16.0
    );
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      child: Text('Tap!!!'),
      onTap: () {
        showToast();
      },
    );
  }
}

これだけで呼び出せるため、シーンを選ばず大変利用しやすい。
toastの方はcontextなども引数に含めないと行けないので、思い付かないが利用シーンを制限されることもあるかもしれない。

oktoast

class _okToastExampleState extends State<okToastExample> {
  @override
  void initState() {
    super.initState();
  }

  showOkToast() {
    showToast(
      'oktoast',
      duration: Duration(seconds: 1),
      position: ToastPosition.bottom,
      backgroundColor: Colors.black.withOpacity(0.5),
      radius: 13.0,
      textStyle: TextStyle(
        fontSize: 16.0,
        color: Colors.white,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return OKToast( //OKToastで囲う
      child: GestureDetector(
        child: Text('Tap!!!'),
        onTap: () {
          showOkToast();
        },
      ),
    );
  }
}

oktoastもシンプルにはかけるが、OKToastのwidgetで囲わなくてはならない。
Exampleには"wrap your app with OKToast"とあってMaterialApp全体を囲っているが、個別に囲っても問題ないし、他の複数のwidgetをラップしても問題なく動作する。
fontや表示時間などをカスタマイズしたいときはこれ一択なのでぜひ利用してみてほしい。

まとめ

  • サクッと入れるだけならfluttertoast
  • カスタマイズしたいならoktoast
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1