Flutter与原生Android交互(kotlin)

开发原生部分,还是点击Open for Editing in Android Studio好用,提示、自动引用功能都能正常使用。

-----------android/app/src/main/kotlin/com/glodon/gzzjy_app/MainActivity.kt

import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.GeneratedPluginRegistrant
 
class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"app.channel.shared.data").setMethodCallHandler(
            MethodChannel.MethodCallHandler { call, result ->
                run {
                    if (call.method.contentEquals("getParam")) {
                        result.success("message")
                        Log.i("test","ms")
                    }
                }
            }
        )
    }
 
}
 

注:这个flutterEngine.dartExecutor.binaryMessenger找了好久,各种文档上都是写的继承于io.flutter.app.FlutterActivity的MainActivity,直接getFlutterView()就行了,但是1.12这个版本的不行了。

------------------lib/main.dart

class _MyHomePageState extends State<MyHomePage> {
  static const platform = const MethodChannel('app.channel.shared.data');
  String dataShared = "No data";
 
  @override
  void initState() {
    super.initState();
    getSharedText();
  }
 
  getSharedText() async {
    var sharedData = await platform.invokeMethod("getParam");
    if (sharedData != null) {
      setState(() {
        dataShared = sharedData;
      });
      print(dataShared);
    }
  }

转载自 草宝虫老大哥的博客 点击跳转

Android原生开发是指使用Android SDK提供的工具和API,使用Java或Kotlin编写应用程序的开发方式。与使用跨平台框架如React Native或Flutter进行开发不同,原生开发可以充分利用Android设备的特性和功能,提供更好的性能和用户体验。 Android原生开发的优势在于可以直接调用系统提供的各种功能与服务,如摄像头、传感器、定位、通知等,使得应用程序能够更好地与硬件进行交互。此外,Android原生开发可以充分利用Android SDK中提供的广泛的API,包括UI组件、多媒体、网络、数据库等,以及许多第三方库和插件,使得开发过程更加灵活和高效。 Android原生开发的另一个重要特点是可以适应不同的设备和屏幕尺寸,通过适配不同的布局、样式和分辨率,使得应用程序在各种设备上都能够良好地运行和展示。此外,原生开发还可以充分利用设备的性能和资源,提供更好的响应速度和流畅度。 然而,Android原生开发也存在一些挑战。首先,与使用跨平台框架相比,原生开发需要更多的学习和了解Android系统和API的知识,对开发者的技术要求较高。其次,对于需要在多个平台上开发的应用程序来说,原生开发需要分别开发和维护各个平台的代码,增加了开发的复杂性和工作量。最后,由于Android系统的不断更新和改进,原生开发需要及时跟进和适应新的API和特性,对开发者来说可能需要持续的学习和更新。 总之,尽管Android原生开发需要具备一定的技术功底和对Android系统的了解,但它可以充分利用Android设备的特性和功能,提供更好的性能和用户体验,适应不同的设备和屏幕尺寸。对于注重性能和用户体验的应用程序来说,原生开发是一种值得选择的开发方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值