美文网首页
Flutter学习的问题记录

Flutter学习的问题记录

作者: anliner | 来源:发表于2020-09-22 13:50 被阅读0次

1、dart与原生交互-MethodChannel

1.1、Android

MethodChannel的两参构造MethodChannel(BinaryMessenger messenger, String name)要求传一个BinaryMessenger 类型的参数,网上很多老版本方法例如用registrar.messenger()或FlutterActivity的flutterView属性等都已经过时,目前1.17.5应使用:

val methodChannel = MethodChannel(flutterEngine!!.dartExecutor.binaryMessenger, "Flutter_Demo_Method")

不知道后面版本还会不会改,使用一些老教材学习时用新的SDK真的很难受······
onMethodCall的处理好像没变:

override fun onMethodCall(methodCall: MethodCall, channelResult: MethodChannel.Result) {
        when (methodCall.method) {
            "updateApp" -> {
                val str = methodCall.argument<String>("str")!!
                val num = methodCall.argument<Int>("num")!!
                val bool = methodCall.argument<Boolean>("bool")!!
                val json = methodCall.argument<String>("userInfo")!!
                val userInfo = Gson().fromJson<UserInfo>(json, UserInfo::class.java)

//                channelResult.success("failure")
                val hashMap = HashMap<String, Any?>()
                hashMap["resultCode"] = 200
                hashMap["resultMsg"] = "success"
                channelResult.success(hashMap)
            }
            else -> {
                channelResult.notImplemented()
            }
        }
    }

1.2、iOS

逻辑与Android差不多,就区别在语法上,特别是从FlutterMethodCall读取入参,iOS这边没有argument,只有arguments,所以需要将参数列表转为NSDictionary再去解析需要的参数值

        let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
        let methodChannel : FlutterMethodChannel = FlutterMethodChannel.init(name: "ECS_Personal_Method", binaryMessenger: controller.binaryMessenger)
        
        methodChannel.setMethodCallHandler({(call:FlutterMethodCall, result: FlutterResult) -> Void in
            let agrs = call.arguments as! NSDictionary
            switch call.method {
            case "updateApp" :
                let str= agrs["str"] as! String
                let num= agrs["num"] as! Int
                let json = agrs["userInfo"] as! NSDictionary
                result("")
            default:
                result(FlutterMethodNotImplemented)
            }
        })

2、webview_flutter插件

webview_flutter插件在iOS上使用时需要在Info.plist里加入

<key>io.flutter.embedded_views_preview</key>
<true/>

如果访问http地址,还需要加

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

但是用xcode打开iOS项目去编辑,应该是要这样:


Info.plist

如果全部按照AS里的key去写,最终没有效果。

相关文章

  • Flutter学习记录-汇总

    Flutter学习记录-布局Flutter学习记录-页面跳转Flutter学习记录-交互Flutter学习记录-基...

  • Flutter面试题收集

    如下:(纯属个人学习记录,如有问题欢迎指正) .1。flutter是什么?概念? 2.为何学习flutter及特性...

  • Flutter问题总结

    本文记录学习Flutter过程中的问题及解决办法. 1. 配置Flutter环境的过程中,一直卡在flutter ...

  • vscode 中flutter找不到模拟器

    记录一个学习flutter中的小问题。我使用的是mac电脑开始学习flutter。在使用vs code中突然找不到...

  • Flutter 开发遇坑指北

    菜鸡iOSer,奉旨带薪学习Flutter跨平台开发,新手Flutter记录学习过程中的常见问题和有趣特性,不定期...

  • Flutter入门

    学习Flutter的入门级小Demo,<>学习记录,如图:

  • Flutter 学习问题记录

    Oh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。 它基于zs...

  • Flutter学习的问题记录

    1、dart与原生交互-MethodChannel 1.1、Android MethodChannel的两参构造M...

  • Flutter 入门学习指北

    Flutter 入门学习指北 学习 Flutter 已有两个月了,记录一下自己的学习过程,flutter 的毫秒级...

  • iOS运行flutrer项目遇到的问题

    最近在学习flutter,记录一下遇到的问题,激励自己的同时也许可以帮到其他人,加油?? flutter项目打开i...

网友评论

      本文标题:Flutter学习的问题记录

      本文链接:https://www.haomeiwen.com/subject/gpphjktx.html