Flutter 插件实现步骤

1). 创建一个 Plugin 或 Package.

其中:Plugin包含 Android 或 iOS 原生 API 的,Package 类似于一个组件,是纯 Dart 语言的。

3110861-69acb560394c79a2.png
图1.png
2). 添加 Package 的配置
3110861-06e0c2c078ed04f7.png
图2.png
3). 编写代码
library toast;

import 'package:flutter/material.dart';

/// Toast 提示工具
class Toast {
  /// 显示
  /// @param context 上下文
  /// @param message 显示信息
  static void show({@required BuildContext context, @required String message}) {
    //创建一个OverlayEntry对象
    OverlayEntry overlayEntry = OverlayEntry(builder: (context) {
      //外层使用Positioned进行定位,控制在Overlay中的位置
      return new Positioned(
          top: MediaQuery.of(context).size.height * 0.8, // 设置距离顶部80%
          child: new Material(
            type: MaterialType.transparency, // 设置透明
            child: new Container(
              width: MediaQuery.of(context).size.width, // 设置宽度
              alignment: Alignment.center, // 设置居中
              child: new Center(
                child: Container(
                  constraints: BoxConstraints(
                      maxWidth: MediaQuery.of(context).size.width *
                          0.8), // 设置约束,最大宽度为屏幕宽的80%
                  child: new Card(
                    child: new Padding(
                      padding: EdgeInsets.all(10),
                      child: new Text(message),
                    ),
                    color: Colors.grey,
                    shape: RoundedRectangleBorder(
                        borderRadius:
                            BorderRadius.all(Radius.circular(10))), // 设置圆角
                  ),
                ),
              ),
            ),
          ));
    });
    //往Overlay中插入插入OverlayEntry
    Overlay.of(context).insert(overlayEntry);
    //两秒后,移除Toast
    new Future.delayed(Duration(seconds: 2)).then((value) {
      // 移除
      overlayEntry.remove();
    });
  }
}
4). Git 依赖
# Flutter 官方插件
dependencies:

  toast: # 项目名称
    git:
      url: https://gitee.com/mazaiting/toast.git # 项目地址
5). 本地依赖
  # 本地仓库依赖
  toast:
    path: /Users/mazaiting/Data/program/flutter/toast
6). 检测信息是否完整
  • pubspec.yaml,、README.md以及CHANGELOG.md文件的内容都正确填写完毕
flutter packages pub publish --dry-run
7). 上传到 Pub
flutter packages pub publish
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值