• Stars
    star
    457
  • Rank 92,537 (Top 2 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a pure flutter toast library

oktoast

oktoast pub package GitHub GitHub stars

A library for flutter.

A pure dart toast Library.

You can completely customize the style of toast.

中文博客介绍

Screenshot

Default Custom GIF
pic pic pic

Versions

3.x.x

Starting from the 3.x version, OKToast provides a null-safety version, the specific introduction of null-safety can be viewed in dart or flutter.

The 2.3.2 version is the last version that does not support null-safety.

About version 1.x

if you use OKToast 1.x, Please use the 1.x branch, and read version readme.

Proposed migration to 2.x version. The new version does not require buildContext.

And you can completely customize the style of toast, because now you can use showToastWidget.

Usage

1. Add library to your pubspec.yaml

latest version: pub package

dependencies:
  oktoast: ^latest_version

2. Import library in dart file

import 'package:oktoast/oktoast.dart';

3. Wrap your app widget

OKToast(
  /// set toast style, optional
  child:MaterialApp()
);

Tips: If you happened error like: No MediaQuery widget found, you can try to use this code to include OKToast to your App.

MaterialApp(
  builder: (BuildContext context, Widget? widget) {
    return OKToast(child: widget);
  },
);

4. Call method showToast

showToast('content');

// position and second have default value, is optional

showToastWidget(Text('hello oktoast'));

Explain

There are two reasons why you need to wrap MaterialApp

  1. Because this ensures that toast can be displayed in front of all other controls
  2. Context can be cached so that it can be invoked anywhere without passing in context

Properties

OKToast params

OKToast have default style, and you also can custom style or other behavior.

name type need desc
child Widget required Usually Material App
textStyle TextStyle optional
radius double optional
backgroundColor Color optional backroundColor
position ToastPosition optional
dismissOtherOnShow bool optional If true, other toasts will be dismissed. Default false.
movingOnWindowChange bool optional If true, when the size changes, toast is moved. Default true.
textDirection TextDirection optional
textPadding EdgeInsetsGeometry optional Outer margin of text
textAlign TextAlign optional When the text wraps, the align of the text.
handleTouch bool optional Default is false, if it's true, can responed use touch event.
animationBuilder OKToastAnimationBuilder optional Add animation to show / hide toast.
animationDuration Duration optional The duration of animation.
animationCurve Curve optional Curve of animation.
duration Duration optional Default duration of toast.

Method showToast

Display text on toast.

Description of params see OKToast.

name type need desc
msg String required Text of toast.
context BuildContext optional
duration Duration optional
position ToastPosition optional
textStyle TextStyle optional
textPadding EdgeInsetsGeometry optional
backgroundColor Color optional
radius double optional
onDismiss Function optional
textDirection TextDirection optional
dismissOtherToast bool optional
textAlign TextAlign optional
animationBuilder OKToastAnimationBuilder optional
animationDuration Duration optional
animationCurve Curve optional

Method showToastWidget

Display custom widgets on toast

Description of params see showToast.

name type need desc
widget Widget required The widget you want to display.
context BuildContext optional
duration Duration optional
position ToastPosition optional
onDismiss Function optional
dismissOtherToast bool optional
textDirection TextDirection optional
handleTouch bool optional
animationBuilder OKToastAnimationBuilder optional
animationDuration Duration optional
animationCurve Curve optional

Method dismissAllToast

Dismiss all toast.

Return value of showToast and showToastWidget

about return type:
showToast and showToastWidget return type is ToastFuture, The ToastFuture can be use to dismiss the toast.

For all dismiss toast method

An optional parameter showAnim is added to control whether fading animation is required for dismiss.

The praram default value is false.

Examples

import 'package:flutter/material.dart';
import 'package:oktoast/oktoast.dart'; // 1. import library

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return OKToast(
      // 2. wrap your app with OKToast
      child:  MaterialApp(
        title: 'Flutter Demo',
        theme:  ThemeData(
          primarySwatch: Colors.blue,
        ),
        home:  MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    _counter++;

    // 3.1 use showToast method
    showToast(
      "$_counter",
      duration: Duration(seconds: 2),
      position: ToastPosition.bottom,
      backgroundColor: Colors.black.withOpacity(0.8),
      radius: 13.0,
      textStyle: TextStyle(fontSize: 18.0),
    );

    showToast(
      "$_counter",
      duration: Duration(seconds: 2),
      position: ToastPosition.top,
      backgroundColor: Colors.black.withOpacity(0.8),
      radius: 3.0,
      textStyle: TextStyle(fontSize: 30.0),
    );

    // 3.2 use showToastWidget method to custom widget
    Widget widget = Center(
      child: ClipRRect(
        borderRadius: BorderRadius.circular(30.0),
        child: Container(
          width: 40.0,
          height: 40.0,
           color: Colors.grey.withOpacity(0.3),
          child: Icon(
            Icons.add,
            size: 30.0,
            color: Colors.green,
          ),
        ),
      ),
    );

    ToastFuture toastFuture = showToastWidget(
      widget,
      duration: Duration(seconds: 3),
      onDismiss: () {
        print("the toast dismiss"); // the method will be called on toast dismiss.
      },
    );

    // can use future
    Future.delayed(Duration(seconds: 1), () {
      toastFuture.dismiss(); // dismiss
    });

    setState(() {

    });
  }

  @override
  Widget build(BuildContext context) {
    return  Scaffold(
      appBar:  AppBar(
        title:  Text("ktoast demo"),
      ),
      body: Stack(
        children: <Widget>[
           Center(
            child: ListView(
              children: <Widget>[
                 Text(
                  'You have pushed the button this many times:',
                ),
                 Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.display1,
                ),
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: RaisedButton(
                    onPressed: () {
                      Navigator.push(context,
                          MaterialPageRoute(builder: (ctx) => MyHomePage()));
                    },
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: RaisedButton(
                    onPressed: _incrementCounter,
                    child: Text('toast'),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

CHANGELOG

Link

LICENSE

Apache-2.0

More Repositories

1

Flutter-Notebook

FlutterDemo合集,今天你fu了吗
Dart
7,138
star
2

flutter_screenutil

Flutter screen adaptation, font adaptation, get screen information
Dart
3,783
star
3

fluwx

Flutter版微信SDK.WeChat SDK for flutter.
Dart
2,971
star
4

tobias

AliPay For Flutter.支付宝Flutter插件
Objective-C
655
star
5

PullToRefresh

Flutter相关的项目QQ:277155832 Email:[email protected]
Dart
470
star
6

k_chart

Maybe it is the best k chart in Flutter.
Dart
430
star
7

Pangolin

🐾 Flutter 广告SDK-字节跳动-穿山甲 集成
Java
328
star
8

OpenFlutter

Love flutter love life.QQ群:892398530
301
star
9

flutter_listview_loadmore

flutter loadmore demos
Dart
242
star
10

flutter_share_me

Flutter Plugin for sharing contents to social media. You can use it share to Facebook , WhatsApp , Twitter And System Share UI. Support Url and Text.
Swift
148
star
11

nautilus

阿里百川电商Flutter插件。
Objective-C
129
star
12

mini_calendar

Date component developed with Flutter, plans to support display, swipe left and right, add date mark, radio, display week, etc.
Dart
112
star
13

mmkv_flutter

get or set persistent storage value based on MMKV framework.
Dart
101
star
14

flutter_im_demo

📞 Flutter 使用 MQTT实现IM功能
Dart
81
star
15

rammus

Flutter Plugin for AliCloud Push.阿里云推送插件
Kotlin
77
star
16

flutter_gesture_password

flutter_gesture_password
Dart
77
star
17

neeko

Flutter video player widget based on video_player
Dart
71
star
18

FlutterInAction

Flutter In Action.Flutter实践。
46
star
19

flutter_ok_image

a flutter image widget to load image.
Dart
40
star
20

sona

@Deprecated Not maintained. Developers who need Getui push please visit official plugins
Objective-C
35
star
21

flutter_database_demo

🛠 Flutter 本地数据库存储 + 状态管理
Dart
34
star
22

tencent_cos

Flutter plugin for cos
Java
23
star
23

flutter_paging

Paging like android jetpack
Dart
11
star
24

flutter_navigation_bar

解决官方例子会不停销毁重建的问题
Dart
10
star
25

kart

A kotlin-style extension collection for dart.
Dart
7
star
26

flutter_ali_face_verify

Flutter plugin for Ali face verify
Dart
1
star