命名 Flutter 插件 EventChannel

Posted

技术标签:

【中文标题】命名 Flutter 插件 EventChannel【英文标题】:Naming a Flutter Plugin EventChannel 【发布时间】:2019-09-23 16:24:15 【问题描述】:

我用

创建了一个新插件
flutter create --template plugin alfalfa

生成包含lib/alfalfa.dart

import 'dart:async';

import 'package:flutter/services.dart';

class Alfalfa 
  static const MethodChannel _channel =
      const MethodChannel('alfalfa');

  //...

我想添加一个EventChannel,以便 Java 和 Objective-C 代码可以回调 Dart 代码。我不知道EventChannel应该叫什么名字。

final EventChannel _eventChannel =
    const EventChannel("com.rollingfields.alfalfa/events");

final EventChannel _eventChannel =
    const EventChannel("alfalfa/events");

还是别的什么?有约定吗?

如果EventChannel 的更好选择是包含反向域的名称,我是否应该将生成的MethodChannel 重命名为com.rollingfields.alfalfa

【问题讨论】:

【参考方案1】:

如有疑问,请查看颤振插件仓库。连接插件使用:

  @visibleForTesting
  static const MethodChannel methodChannel = MethodChannel(
    'plugins.flutter.io/connectivity',
  );

  @visibleForTesting
  static const EventChannel eventChannel = EventChannel(
    'plugins.flutter.io/connectivity_status',
  );

所以,当然是良好实践的一个例子。所以,也许com.rollingfields/alfalfacom.rollingfields/alfalfa_events

【讨论】:

谢谢你,理查德! (他们没有使用标准的反向域名约定来命名空间是多么奇怪。)

以上是关于命名 Flutter 插件 EventChannel的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 中的命名路由如何消除重复?

未定义命名参数“home” - Flutter

flutter 插件引入安卓aar包

Flutter TextSelection.collapsed:未定义命名参数“offset”

flutter插件发布及问题解决

Flutter 通过命名路由导航直接传递参数