美文网首页Flutter全栈Flutter for Android
Flutter之 windows desktop method

Flutter之 windows desktop method

作者: 跨端开发 | 来源:发表于2021-03-10 19:25 被阅读0次
    flutter2.png

    Flutter2.0

    Flutter2.0已经发布了,带来了很多新消息。使开发人员能够为任何平台创建美观、快速且可移植的应用程序。 借助 Flutter 2,可以使用相同的代码库将本机应用程序发布到五个操作系统: iOS,Android,Windows,macOS 和 Linux; 以及针对 Chrome,Firefox,Safari 或 Edge 等浏览器的 Web 体验。 Flutter 甚至可以嵌入到汽车,电视和智能家电中,为环境计算世界提供普遍且可延展的体验。
    现在终于可以在stable下直接开发桌面应用了。最近刚好在做一个答题卡识别APP,需要做Windows版本(内心是不想的,无奈Windows系统用户多)。正好体验一下更新之后的变化。

    flutter windows desktop

    首先,切换到stable channel:

    flutter channel stable 
    

    更新

    flutter upgrade 
    

    打开Windows、macOS、Linux桌面支持

    flutter config --enable-windows-desktop 
    flutter config --enable-macos-desktop 
    flutter config --enable-linux-desktop 
    

    创建项目

    flutter create xxx
    

    已有项目使用

    flutter create .
    

    即可重新生成项目。

    method channel

    使用平台通道在flutter和native本地程序之间进行传递消息。Method channel就是平台通道的api。


    PlatformChannels.png

    网上和官方能查到的都是关于iOS、Android平台的使用教程,关于flutter windows桌面平台的资料几乎没有,在github上有看到一些issue。内容也不够准确,通过自己的尝试,最后终于找到了方法。
    在flutter windows项目目录,找到runner文件夹下的flutter_windows_.cpp,添加如下代码:

    #include "flutter/method_channel.h"
    #include "flutter/standard_method_codec.h"
    void configMethodChannel(flutter::FlutterEngine *engine) {
      const std::string test_channel("com.caidan.yuejuan/scan");
      const flutter::StandardMethodCodec& codec = flutter::StandardMethodCodec::GetInstance();
      flutter::MethodChannel method_channel_(engine->messenger(), test_channel, &codec);
      method_channel_.SetMethodCallHandler([](const auto& call, auto result) {
        std::cout << "Inside method call" << std::endl;
        if (call.method_name().compare("__closeWindow__") == 0) {
          std::cout << "Close window message recieved!" << std::endl;
          result->Success();
        }
        else if (call.method_name().compare("goToNativeScanPage") == 0) {
            std::cout << "goToNativeScanPage!" << std::endl;
    
            result->Success();
        }
      });
    }
    

    在OnCreate方法中,调用configMethodChannel方法即可。
    在dart代码中添加调起的方法就不赘述,不知道得可以看官方教程https://flutterchina.club/platform-channels/

    参考

    相关文章

      网友评论

        本文标题:Flutter之 windows desktop method

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