欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何在Flutter中調(diào)用Android中的Native方法-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)如何在Flutter中調(diào)用 Android中的Native方法,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比徐聞網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式徐聞網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋徐聞地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

Flutter 調(diào)用 Android Native 的方法,是通過(guò)MethodChannel的方式來(lái)實(shí)現(xiàn)的:


在Android端:

  • 創(chuàng)建一個(gè)Class,實(shí)現(xiàn)FlutterPlugin和MethodCallHandler接口

  • 重寫onAttachedToEngine(),onDetachedFromEngine(),onMethodCall()

  • onAttachedToEngine()中,根據(jù)自定義的CHANNEL_NAME創(chuàng)建MethodChannel, onDetachedFromEngine中,釋放MethodChannel

  • onMethodCall中,通過(guò)自定義的METHOD_NAME,來(lái)響應(yīng)Flutter中,invokeMethod對(duì)Native的通信,代碼如下

class MethodChannelPlugin : FlutterPlugin, MethodChannel.MethodCallHandler {

  private var methodChannel: MethodChannel? = null
  private var mNoteForFlutterListener: NoteForFlutterListener? = null

  companion object {
    private const val CHANNEL_NAME = "method_channel"
    private const val METHOD_NAME = "saveNote"
    val instance: MethodChannelPlugin by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
      MethodChannelPlugin()
    }
  }

  override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
    methodChannel = MethodChannel(binding.binaryMessenger, CHANNEL_NAME)
    methodChannel?.setMethodCallHandler(this)
  }

  override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
    methodChannel?.setMethodCallHandler(null)
    methodChannel = null
  }

  override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
    if (call.method == METHOD_NAME) {
      val content = call.argument<String>("content")
      mNoteForFlutterListener?.sendData(content!!)
      result.success("success")
    } else {
      result.notImplemented()
    }
  }

  fun setListener(noteForFlutterListener: NoteForFlutterListener) {
    mNoteForFlutterListener = noteForFlutterListener
  }

在Flutter端:

  • 根據(jù)Native中定義的METHOD_NAME來(lái)創(chuàng)建MethodChannel

  • 通過(guò)MethodChannel.invokeMethod(METHOD_NAME,params),參數(shù)METHOD_NAME為Native中定義的METHOD_NAME,params為傳遞的參數(shù),就可以和Native進(jìn)行通信了,在Native的onMethodCall方法中,通過(guò)call.method == METHOD_NAME來(lái)確定,F(xiàn)lutter是否調(diào)用的是Native中定義的METHOD_NAME的方法,代碼如下

class NoteMainFulState extends State<NoteMainFul> {
 //flutter 和 native 通信
 static const _methodMessageChannel = MethodChannel("method_channel");
 TextField textField;
 TextEditingController textEditingController;

 @override
 Widget build(BuildContext context) {
  return Scaffold(
   body: Container(
    margin: EdgeInsets.fromLTRB(20.0, 60.0, 20.0, 20.0),
    child: Column(
     children: [
      Container(
       child: Column(
        children: [
         textField = TextField(
          //去掉下劃線
          decoration: InputDecoration(border: InputBorder.none),
          enabled: true,
          controller: textEditingController = NoteTextEditingController(),
          keyboardType: TextInputType.multiline,
          textInputAction: TextInputAction.newline,
          maxLines: null,
         ),
         RichText(
          text: TextSpan(),
         ),
        ],
       ),
      ),
      Container(
       color: Colors.deepPurple,
       height: 50,
       child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
         GestureDetector(
          child: Icon(
           Icons.forward,
          ),
          onTap: clickOut,
         )
        ],
       ),
      )
     ],
    ),
   ),
  );
 }

 void clickOut() async {
  //調(diào)用native方法,返回首頁(yè)
  var content = textEditingController.text;
  Map<String, dynamic> map = {"content": content};
  var result = await _methodMessageChannel.invokeMethod("saveNote", map);
  print("result $result");
 }

以上就是如何在Flutter中調(diào)用 Android中的Native方法,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:如何在Flutter中調(diào)用Android中的Native方法-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://chinadenli.net/article40/psceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、標(biāo)簽優(yōu)化、云服務(wù)器小程序開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
亚洲日本中文字幕视频在线观看| 久久99这里只精品热在线| 久久精品国产亚洲av麻豆尤物| 亚洲精品国产第一区二区多人| 成年男女午夜久久久精品 | 福利一区二区视频在线| 国产精品日韩精品最新| 成年人视频日本大香蕉久久| 五月婷婷六月丁香亚洲| 国产一区二区在线免费| 成人精品国产亚洲av久久| 国产熟女一区二区精品视频| 黑丝国产精品一区二区| 亚洲一区二区三区在线中文字幕| 日韩人妻一区二区欧美| 国产欧美日韩一级小黄片| 色播五月激情五月婷婷| 中文字幕久热精品视频在线| 国产高清一区二区不卡| 国内尹人香蕉综合在线| 久久精品中文字幕人妻中文| 国产精品一区二区丝袜| 久久精品久久久精品久久| 国产精品午夜福利免费在线| 国产精品推荐在线一区| 精品少妇人妻av一区二区蜜桃| 日韩精品一区二区三区射精| 清纯少妇被捅到高潮免费观看| 日本午夜乱色视频在线观看| 国产视频在线一区二区| 好吊日成人免费视频公开| 91欧美日韩中在线视频| 一区二区不卡免费观看免费| 特黄大片性高水多欧美一级 | 欧美日韩一区二区午夜| 久久热在线视频免费观看| 国产精欧美一区二区三区久久| 人妻熟女欲求不满一区二区| 国产精品白丝久久av| 91精品国自产拍老熟女露脸| 狠狠干狠狠操在线播放|