Flutter plugin插件制作详细过程以及发布到pub.dev的步骤

一、Flutter plugin插件制作详细过程

1. 创建Flutter插件

首先,你需要创建一个Flutter插件项目。如果你还没有创建,可以使用以下命令:

flutter create --template=plugin my_flutter_plugin

2. 添加iOS原生代码

ios/Classes目录下,我们将添加一个Objective-C文件(假设你使用Objective-C,但如果你使用Swift,步骤类似)。

MyFlutterPlugin.m
#import <Flutter/Flutter.h>  
  
@interface MyFlutterPlugin : NSObject<FlutterPlugin>  
@end  
  
@implementation MyFlutterPlugin  
+ (void)registerWithRegistrar:(FlutterPluginRegistrar*)registrar {  
    FlutterMethodChannel* channel = [FlutterMethodChannel methodChannelWithName:@"my_flutter_plugin" binaryMessenger:registrar.messenger];  
    MyFlutterPlugin* instance = [[MyFlutterPlugin alloc] init];  
    [channel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) {  
        if ([@"getPlatformVersion" isEqualToString:call.method]) {  
            result([UIDevice currentDevice].systemVersion);  
        } else {  
            result(FlutterMethodNotImplemented);  
        }  
    }];  
}  
  
@end

在这个例子中,我们创建了一个名为MyFlutterPlugin的类,它实现了FlutterPlugin协议。在registerWithRegistrar方法中,我们创建了一个FlutterMethodChannel,它用于在Flutter和iOS之间传递方法调用和结果。我们为这个通道设置了一个方法调用处理器,它监听来自Flutter的调用,并根据调用的方法名(在这个例子中是"getPlatformVersion")执行相应的操作,并返回结果。

3. 更新Flutter端代码

在Flutter端,我们需要定义一个Dart类来与iOS原生代码交互。这个类将使用MethodChannel来发送方法调用并接收结果。

my_flutter_plugin.dart
import 'dart:async';  
  
import 'package:flutter/services.dart';  
  
class MyFlutterPlugin {  
  static const MethodChannel _channel = MethodChannel('my_flutter_plugin');  
  
  static Future<String> getPlatformVersion() async {  
    final String version = await _channel.invokeMethod('getPlatformVersion');  
    return version;  
  }  
}

在这个Dart文件中,我们定义了一个名为MyFlutterPlugin的类,它包含一个静态的MethodChannel实例。我们提供了一个名为getPlatformVersion的静态方法,它使用_channel.invokeMethod来调用iOS原生代码中的"getPlatformVersion"方法,并等待结果

4. 使用插件

现在,你可以在你的Flutter应用中使用MyFlutterPlugin类来获取平台版本了。

使用示例
import 'package:flutter/material.dart';  
import 'package:my_flutter_plugin/my_flutter_plugin.dart';  
  
void main() {  
  runApp(MyApp());  
}  
  
class MyApp extends StatelessWidget {  
  @override  
  Widget build(BuildContext context) {  
    return MaterialApp(  
      home: MyHomePage(),  
    );  
  }  
}  
  
class MyHomePage extends StatefulWidget {  
  @override  
  _MyHomePageState createState() => _MyHomePageState();  
}  
  
class _MyHomePageState extends State<MyHomePage> {  
  String _platformVersion = 'Unknown';  
  
  void _getPlatformVersion() async {  
    String platformVersion = await MyFlutterPlugin.getPlatformVersion();  
    setState(() {  
      _platformVersion = platformVersion;  
    });  
  }  
  
  @override  
  Widget build(BuildContext context) {  
    return Scaffold(  
      appBar: AppBar(  
        title: Text('Plugin Demo'),  
      ),  
      body: Center(  
        child: Column(  
          mainAxisAlignment: MainAxisAlignment.center,  
          children: <Widget>[  
            Text('Running on: $_platformVersion'),  
            ElevatedButton(  
              onPressed: _getPlatformVersion,  
              child: Text('Get Platform Version'),  
            ),  
          ],  
        ),  
      ),  
    );  
  }  
}

5、在Flutter工程中引入插件

更新pubspec.yaml文件

  • 在你的Flutter项目中,打开pubspec.yaml文件。
  • dependencies部分添加你的插件依赖。如果插件已经发布到pub.dev,你可以直接添加其名称和版本号。如果插件是本地的,你可以使用path依赖来指向插件的本地路径
dependencies:  
  flutter:  
    sdk: flutter  
  my_flutter_plugin:  
    path: ../path/to/my_flutter_plugin

二、发布到pub.dev

  1. 准备发布
    • 确保你的插件遵循Flutter和Dart的最佳实践。
    • 清理并格式化你的代码。
    • 编写README.md文件,提供插件的安装说明、使用示例和API文档。
    • 更新pubspec.yaml文件,确保所有依赖都是最新的,并添加插件的描述、作者信息、版本号等。
      name: your_plugin_name  
      description: Your plugin description  
      version: 1.0.0  
      author: Your Name  
      homepage: https://your.homepage.url  
  2. 预发布检查
    • 使用flutter pub publish --dry-run命令进行预发布检查,这将模拟发布过程并报告任何潜在问题。
  3. 发布插件
    • 在终端中,运行flutter pub publish命令来发布你的插件。
    • 系统会提示你输入插件的版本号,并验证你的Google账号(如果尚未验证)。
    • 如果你的网络环境无法直接访问Google的服务器,你可能需要配置代理或使用VPN。
  4. 等待审核
    • 提交后,你的插件将进入审核阶段。pub.dev的审核团队会检查你的插件是否符合发布标准。
    • 如果审核通过,你的插件将被发布到pub.dev上,供其他开发者使用。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值