不爱贞子爱爽子
バキューン

toastDemo.dart

import 'package:flutter/material.dart';
import 'dart:async';

class ToastHelper {
  static const style = TextStyle(
    color: Colors.white,
    fontSize: 14.0,
    decoration: TextDecoration.none,
  );
  // 生成widget
  Widget makeWidget(icon, text) {
    return Center(
      child: Container(
        decoration: new BoxDecoration(
          color: Colors.lightBlue,
          borderRadius: BorderRadius.all(Radius.circular(4.0)),
          //设置四周边框
          border: new Border.all(width: 1, color: Colors.grey),
        ),
        padding: const EdgeInsets.symmetric(vertical: 5.0, horizontal: 10.0),
        child: Row(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            // 图标或图片
            Container(
              child: Image.asset(
                icon,
                width: 32.0,
                height: 28.0,
              ),
              margin: const EdgeInsets.only(left: 4.0, right: 4.0),
            ),
            Text(
              text,
              style: style,
            ),
          ],
        ),
      ),
    );
  }

  // crying
  void showCryingToast(BuildContext context, String text) {
    const icon = 'images/icon/crying.png';
    Widget widget = makeWidget(icon, text);
    var entry = OverlayEntry(
      builder: (_) => widget,
    );

    Overlay.of(context).insert(entry);
    Timer(const Duration(seconds: 2), () {
      entry?.remove();
    });
  }

  // laughing
  void showLaughingToast(BuildContext context, String text) {
    const icon = 'images/icon/laughing.png';
    Widget widget = makeWidget(icon, text);
    var entry = OverlayEntry(
      builder: (_) => widget,
    );

    Overlay.of(context).insert(entry);
    Timer(const Duration(seconds: 2), () {
      entry?.remove();
    });
  }

  // info
  void showInfoToast(BuildContext context, String text) {
    const icon = 'images/icon/info.png';
    Widget widget = makeWidget(icon, text);
    var entry = OverlayEntry(
      builder: (_) => widget,
    );

    Overlay.of(context).insert(entry);
    Timer(const Duration(seconds: 2), () {
      entry?.remove();
    });
  }

  // warning
  void showWarningToast(BuildContext context, String text) {
    const icon = 'images/icon/warning.png';
    Widget widget = makeWidget(icon, text);
    var entry = OverlayEntry(
      builder: (_) => widget,
    );

    Overlay.of(context).insert(entry);
    Timer(const Duration(seconds: 2), () {
      entry?.remove();
    });
  }

  // error
  void showErrorToast(BuildContext context, String text) {
    const icon = 'images/icon/error.png';
    Widget widget = makeWidget(icon, text);
    var entry = OverlayEntry(
      builder: (_) => widget,
    );

    Overlay.of(context).insert(entry);
    Timer(const Duration(seconds: 2), () {
      entry?.remove();
    });
  }


}

 

里面的图表需要在pubspec.yaml 引入

  assets:
   #  loading
   - images/loading/01.jpg
   - images/loading/02.jpg
   - images/loading/03.jpg
   - images/loading/04.jpg
   - images/loading/05.jpg
   # icon
   - images/icon/sawako.jpg
   - images/icon/flower.png
   - images/icon/code.png
   - images/icon/tools.png
   - images/icon/hat.png
   - images/icon/socks.png
   - images/icon/crying.png
   - images/icon/laughing.png
   - images/icon/info.png
   - images/icon/warning.png
   - images/icon/error.png

使用:

 

onPressed: () async {
            final toastHelp = new ToastHelper();
            toastHelp.showErrorToast(context, "出错了呢~");   // context 
}

传入context即可。

 

 显示效果:

cryingToast:

 

 errorToast:

 

 

 

 

posted on 2021-08-02 15:09  不爱贞子爱爽子  阅读(300)  评论(0编辑  收藏  举报

! !