Flutter插件开发---》调用Android原生Toast
时间:2021-08-04
本文章向大家介绍Flutter插件开发---》调用Android原生Toast,主要包括Flutter插件开发---》调用Android原生Toast使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
-
example中main.dart布局
-
注意:FlutterPluginOne是在创建插件时根据名字来进行创建的,如下图:
具体内容如下:
class FlutterPluginOne {
// 这里的flutter_plugin_one字符串没有特殊要求,只需要和FlutterPluginOnePlugin.kt中的设置一样即可,即第4步
static const MethodChannel _channel =
const MethodChannel('flutter_plugin_one');
static Future<String?> get platformVersion async {
final String? version = await _channel.invokeMethod('getPlatformVersion');
return version;
}
// 显示Toast
static Future<void> showToast() async {
await _channel.invokeMethod("showToast");
}
// 通过get
static Future<void> get showToastByGet async {
await _channel.invokeMethod("showToast");
}
// 接受参数
static Future<void> showToastByMessage({String? message}) async {
Map param = Map<String,String>();
param["message"] = message ?? "showToastByMessage";
await _channel.invokeMapMethod("showToastByMessage",param);
}
}
-
插件项目下的android目录下:
-
FlutterPluginOnePlugin.kt中的内容如下:
/** FlutterPluginOnePlugin */ class FlutterPluginOnePlugin() : FlutterPlugin, MethodCallHandler { private lateinit var context: Context /// The MethodChannel that will the communication between Flutter and native Android /// /// This local reference serves to register the plugin with the Flutter Engine and unregister it /// when the Flutter Engine is detached from the Activity private lateinit var methodChannel: MethodChannel private lateinit var eventChannel: EventChannel override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { methodChannel = MethodChannel(flutterPluginBinding.binaryMessenger, "flutter_plugin_one") methodChannel.setMethodCallHandler(this) context = flutterPluginBinding.applicationContext } override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { if (call.method == "getPlatformVersion") { result.success("Android ${android.os.Build.VERSION.RELEASE}") } else if (call.method == "showToast") { Toast.makeText(context, "来自Android SDK中的Toast", Toast.LENGTH_SHORT) .show() } else if (call.method == "showToastByMessage") { val arguments = call.arguments as Map<*, *> Toast.makeText(context, arguments["message"] as String, Toast.LENGTH_SHORT) .show() } else { result.notImplemented() } } override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { methodChannel.setMethodCallHandler(null) } }
-
当我们点击+按钮时,就会弹出“来自Android SDK中的Toast”内容。
原文地址:https://www.cnblogs.com/sowhappy/p/15100868.html
- Scrapy在Ubuntu下的安装与配置
- Selenium2+python自动化20-引入unittest框架
- HDU 1002 A + B Problem II(高精度加法(C++/Java))
- POJ 1018 Communication System
- POJ 1017 Packets
- Codeforces 725B Food on the Plane
- Codefoces 723B Text Document Analysis
- Codefoces 723A The New Year: Meeting Friends
- ECJTUACM16 Winter vacation training #1 题解&源码
- 信息学奥赛一本通算法(C++版)基础算法:高精度计算
- 看破欧拉函数的奥秘
- 线段树入门总结
- 从零基础学三分查找
- Codeforces Beta Round #1 A,B,C
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- python 技术篇-3行代码搞定图像文字识别,pytesseract库实现
- hadoop2.6.0完全分布式手动安装
- Python 库安装问题:ModuleNotFoundError: No module named 'windows'. 解决方法
- Python各种文件删除函数的功能区分!
- Python 技术篇-轻松操作windows系统电脑鼠标指针移动、点击
- Typora Picgo自动使用图床上传图片
- 【Python】文件的选择性压缩和全压缩,一般人不告诉的实用小技巧!
- 搭建hadoop集群虚拟机试验环境
- PLSQL-简单的语句块及变量的定义
- Python 技术篇-使用PIL库等比例压缩、缩小图片
- linux 安装并配置zsh
- 听音乐不过瘾?自制一个音乐播放器!【附带函数源码】
- Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法
- Linux 文件隐藏权限
- 还在用print()查找错误?日志消息这顿排骨它不香嘛?