android - FlutterActivity MethodChannel和FlutterView
android - FlutterActivity MethodChannel和FlutterView
因此,大约4个月前,我编写了Flutter应用程序。现在,我想做一个小小的更改,但是我不能再编译应用程序了,因为GeneratedPluginRegistrant.registerWith(this)不再起作用了,我没有更改Kotlin代码,只更改了Dart代码。
“GeneratedPluginRegistrant.registerWith( this )”中的“此”向我显示此错误:
Type mismatch.
Required: FlutterEngine!
Found: MainActivity
MainActivity类:
import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.view.FlutterMainclass MainActivity : FlutterActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)GeneratedPluginRegistrant.registerWith(this) // here is the error: Type mismatch. Required: FlutterEngine! Found: MainActivityMethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result ->if (call.method == "helloFromNativeCode") {val greetings = helloFromNativeCode()result.success(greetings)}}}private fun helloFromNativeCode(): String {return "Hello from Native Android Code"}companion object {private const val CHANNEL = "flutter.native/helper"}
}
如果使用:
import io.flutter.embedding.android.FlutterActivity
代替
import io.flutter.app.FlutterActivity
我可以用
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {GeneratedPluginRegistrant.registerWith(flutterEngine);}
但遇到以下问题:
MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result ->if (call.method == "helloFromNativeCode") {val greetings = helloFromNativeCode()result.success(greetings)}}
因为我在 flutterView 上遇到错误:
Unresolved reference: flutterView
代码如下所示:
import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.view.FlutterMainclass MainActivity : FlutterActivity() {override fun configureFlutterEngine(flutterEngine: FlutterEngine) {GeneratedPluginRegistrant.registerWith(flutterEngine);}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result -> // here is the errorif (call.method == "helloFromNativeCode") {val greetings = helloFromNativeCode()result.success(greetings)}}}private fun helloFromNativeCode(): String {return "Hello from Native Android Code"}companion object {private const val CHANNEL = "flutter.native/helper"}
}
我希望有一个人可以帮助我。
最佳答案
代替flutterView,请使用flutterEngine.getDartExecutor()。
关于android - FlutterActivity MethodChannel和FlutterView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323505/
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_package_demo/theme/themes.dart';class UserPage extends StatefulWidget {const UserPage({Key key}) : super(key: key);@override_UserPageState createState() => _UserPageState();
}const String CHANNEL ="www.luckly.work"; //这儿要与 MethodChannel(flutterView, CHANNEL)中CHANNEL名称一致
const String invokeMethod ="breeze"; //这儿要与 call.method == invokeMethod中invokeMethod名称一致
var channel = const MethodChannel(CHANNEL);class _UserPageState extends State<UserPage> {String _result = "";@overrideWidget build(BuildContext context) {final theme = Theme.of(context);return Scaffold(appBar: AppBar(title: Text("个人",style: TextStyle(color: theme.accentColor,),),),body: Container(child: Column(children: [Text("个人",style: TextStyle(color: theme.accentColor,),),FlatButton(onPressed: () {setState(() {});currentTheme.toggleTheme();},child: Text("多主题",style: TextStyle(color: theme.accentColor,),),),Center(child: RaisedButton(onPressed: () async {var result = await channel.invokeMethod(invokeMethod);setState(() {_result = result;});print(result);},child: new Text(_result),),)],),),);}
}
package com.example.flutter_package_demo//import io.flutter.app.FlutterActivity
import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant//import io.flutter.embedding.android.FlutterActivity//import io.flutter.view.FlutterMainclass MainActivity : FlutterActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// GeneratedPluginRegistrant.registerWith(this) // here is the error: Type mismatch. Required: FlutterEngine! Found: MainActivityMethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result ->if (call.method == InvokeMethod) {val greetings = successNativeCode()result.success(greetings)}}}private fun successNativeCode(): String {return "我是android原生跑过来的数据"}companion object {private const val CHANNEL = "www.luckly.work"private const val InvokeMethod = "breeze"}
}
android - FlutterActivity MethodChannel和FlutterView相关推荐
- 混合开发Android FlutterActivity 的透明状态栏
前言 我们知道,在纯flutter 的项目中,设置透明状态栏只需要在flutter 的入口处添加下面这段代码就可以, if (Platform.isAndroid) {//设置Android头部的导航 ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )
文章目录 前言 一.Android 端 MethodChannel 构造函数 二.Android 端 setMethodCallHandler 方法 三.Android 端实现 MethodChann ...
- flutter和Android混编下出现“No implementation found for method xxxx on channel”错误
flutter和Android混编下出现"No implementation found for method xxxx on channel"错误 这个错误出现的原因是Plugi ...
- 一个Android菜鸟入门Flutter 笔记(二)
1. 网络编程与JSON解析 默认的HttpClient请求网络 get() async {//创建网络调用示例,设置通用请求行为(超时时间)var httpClient = HttpClient() ...
- Flutter1.12与原生Android交互(kotlin)
开发原生部分,还是点击Open for Editing in Android Studio好用,提示.自动引用功能都能正常使用. -----------android/app/src/main/kot ...
- 与Flutter第一次亲密接触-Android 视角
作者简介 万坤,5年安卓开发经验,16年加入饿了么,现任职饿了么资深安卓开发工程师,负责饿了么物流安卓相关APP线上的高稳定运行. 前言 Flutter在今年6月份发布第一个Release预览版以来, ...
- 糅合flutter-boost与MethodChannel的使用方法
在<flutter-boost的集成与基本使用(android与flutter的混合开发)>中提到了在大部分情况下,我们不满足于简单的跳转,想要android原生和flutter进一步的融 ...
- flutter与android原生通信
1.原因 刚接触flutter的时候,以为flutter是一个全新开发app的语言,独立于Android原生之外的操作,入坑之后发现不是的.因为Flutter不能完成所有Native的功能,比如不同平 ...
- Flutter与Android原生交互
记录一下小白的学习之路,图片都是走过的坑 文末附demo地址 文章目录 创建project Android端(native) Flutter端 Android调用flutter 创建project 首 ...
最新文章
- Ubuntu 系统打开任务管理
- python哪本好-Python入门看哪本书好? 这里有答案
- python区块链开发_10个开源的Python区块链项目
- PostGIS容器运行
- 数据结构+算法 学习计划与资源
- Go内存管理之代码的逃逸分析
- android studio技巧之设置monitor窗口模式查看logcat
- matlab生成chirp信号,chirp信号(chirp信号的产生)
- VMware 找不到我的计算机
- 梦幻家园前37关(iPad)
- matlab 交互效应三维图,【MATLAB】使用MATLAB绘制心理学中的交互作用图
- 永磁无刷直流电机的分类与区别
- 数据分析指标缩写英文单词解释
- php readystate,ajax+php打造进度条 readyState各状态
- 统计学三大相关系数之Pearson相关系数、Spearman相关系数
- 离散数学中 集合、关系、群 的证明方法(英文证明附例题)
- Postgresql12+Pgpool-ii 4.1高可用集群
- Android实现SSH Client
- HM编码器代码阅读(16)——帧间预测之AMVP模式(四)预测MV的获取
- [基础]-beautifulsoup模块使用详解
热门文章
- 织梦熊掌号插件兼容php5.3,DedeCMS百度熊掌号推送插件下载
- android 动画 最顶层_【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗...
- VS2017 报错pthread.h头文件提示无法打开找不到
- 解决Windows接收IPSEC(IKE)流量的问题
- python 余弦距离_距离公式汇总以及Python实现
- mysql临时表好处和坏处_mysql临时表产生的执行效率问题改进(转)
- linux程序加载器,Linux 动态连接加载器 ld-linux用法
- springboot 做表白墙_华农表白墙144期 | 等什么时候,她从我开的花店前经过,我把整个花店送个她可好。...
- java实验报告合肥工业大学_合肥工业大学 计算机专业 计算方法实验报告
- java dispatchevent_dispatchEvent(AWTEvent) 分派事件