zoukankan      html  css  js  c++  java
  • flutter 使用vs编辑windows插件

    1. 创建插件
    mkdir win_test && cd win_test
    flutter create -t plugin --platforms windows ./
    
    1. 找到win_testexampleuildwindowspluginswin_testwin_test_plugin.sln使用vs打开编辑

    2. win_testlibwin_test.dart中编写Dart Api

    一个函数示例

    win_test.dart:

    class WinTest {
      static const MethodChannel _channel = const MethodChannel('win_test');
    
      ///
      ///## Example
      ///```dart
      ///print( await WinTest.hello("hello world", "msg", 0) );
      ///```
      ///
      static Future<int> hello(String content, String title, int uType) async {
        return await _channel.invokeMethod('hello', [content, title, uType]);
      }
    }
    

    win_test_plugin.cpp:

    #include <iostream>
    
    using namespace std;
    
    void WinTestPlugin::HandleMethodCall(
        const flutter::MethodCall<flutter::EncodableValue> &method_call,
        unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
    
      if ( method_call.method_name().compare("hello") == 0 )
      {
        const auto* arguments = get_if<flutter::EncodableList>(method_call.arguments());
        if (!arguments)
        {
          result->Error(0);
          return;
        }
    
        auto lpText = arguments->at(0);
        auto lpCaption = arguments->at(1);
        auto uType = arguments->at(2);
        result->Success(
          MessageBoxA(0, get<string>(lpText).c_str(), get<string>(lpCaption).c_str(), get<int>(uType))
        );
      }
      result->NotImplemented();
    }
    

    处理单个参数

    _channel.invokeMethod('hello', 10);
    
    auto* uFlags = get_if<int>(mc.arguments());
    

    发送map返回list

        print(await _channel.invokeMethod(
          'hello',
          {'a': 1, 'b': 'hello world'},
        )); // [1, hello world]
    
        auto* arguments = get_if<flutter::EncodableMap>(method_call.arguments());
        if (!arguments)
        {
          result->Error("arguments error");
          return;
        }
        auto* a = get_if<int>(&(arguments->find(flutter::EncodableValue("a"))->second));
        auto* b = get_if<string>(&(arguments->find(flutter::EncodableValue("b"))->second));
    
        auto r =  flutter::EncodableList();
        r.push_back( *a );
        r.push_back( *b );
        result->Success(r);
    

    返回Map

        print(
          await _channel.invokeMethod(
          'hello',
          {'a': 1, 'b': 'hello world'},
        )
        ); //  {a_v: 1, b_v: hello world}
    
        auto* arguments = get_if<flutter::EncodableMap>(method_call.arguments());
        if (!arguments)
        {
          result->Error("arguments error");
          return;
        }
        auto* a = get_if<int>(&(arguments->find(flutter::EncodableValue("a"))->second));
        auto* b = get_if<string>(&(arguments->find(flutter::EncodableValue("b"))->second));
    
        auto r = flutter::EncodableMap::map();
        r.insert(pair<flutter::EncodableValue, flutter::EncodableValue>(flutter::EncodableValue("a_v"), *a));
        r.insert(pair<flutter::EncodableValue, flutter::EncodableValue>(flutter::EncodableValue("b_v"), flutter::EncodableValue(b->c_str())));
        result->Success( r );
    
  • 相关阅读:
    利用API对OWLS描述的服务进行操作 转贴
    转arcgis server部署 自己安装的体会
    最后一次的温柔
    JUDDI安装完整版 (转帖W3CHINA)
    jUDDI安装总结
    Protege中安装owls editor、graphviz插件
    改完了开题报告 舒口气
    服务组合的QoS信息
    owls editor
    一、性能测试术语
  • 原文地址:https://www.cnblogs.com/ajanuw/p/13754865.html
Copyright © 2011-2022 走看看