Flutter   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Flutter进阶—平台插件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

这篇文章我们会学习Flutter应用程序如何与iOS和Android设备上可用的平台特定代码集成,这包括设备API,(比如url_launcher和battery)和第三方平台SDK(比如Firebase)。

使用现有的平台插件

Flutter插件是一种特殊的包,一个插件包含一个用Dart编写的API定义,结合Android的平台特定实现,适用于iOS或两者兼容。

搜索插件

现有的Flutter插件可以在Flutter插件仓库查找,其显示在pub存储库中共享的插件。因为Flutter仍然是一个年轻的语言,目前在pub上只有一小部分插件,需要作为Flutter程序员的我们开发和发布新的插件

在程序中@L_801_22@插件

如果要@L_801_22@一个插件“plugin1”到一个应用程序:

  1. 打开您的应用程序文件夹中的pubspec.yaml文件,并在dependencies下@L_801_22@plugin1

    @H_772_22@
  2. 获取插件
    在终端中:运行Flutter packages get
    在IntelliJ中:在pubspec.yaml顶部的动作功能区中点击“Packages Get”

    @H_772_22@
  3. 构建或运行您的应用程序,作为其中的一部分,Flutter将“插入”平台特定的代码,从插件到您的应用程序。

    @H_772_22@

演示实例

URL Launcher插件允许您打开移动平台上的认浏览器来显示给定的URL,它在Android和iOS上均受支持。我们就写一个使用Flutter URLLauncher插件启动浏览器的实例。

首先打开pubspec.yaml,并@L_801_22@url_launcher插件

dependencies:
  Flutter:
    sdk: Flutter
  url_launcher:

@L_801_22@完成之后记得点击顶部的“Packages Get”,然后再打开lib/main.dart,并将其全部内容替换为以下代码

import 'package:Flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(new MyApp());
}

class @H_368_60@myApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        title: 'Flutter Demo',home: new DemoPage(),);
  }
}

class DemoPage extends StatelessWidget {
  launchURL() {
    launch('https://www.baidu.com/');
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Center(
        child: new RaisedButton(
          onPressed: launchURL,child: new Text('百度首页'),)
      )
    );
  }
}

运行应用程序,当您点击“百度首页”时,您应该会看到手机的认浏览器打开,并显示百度首页

创建一个平台插件

如果您希望在多个Flutter应用程序中使用特定于平台的代码,将代码分离到位于主应用程序之外的目录中,作为平台插件是很好的方案,甚至还能分享给所有Flutter开发人员。

您可以使用–plugin标记Flutter create创建一个插件项目。使用–org选项指定您的组织,使用反向域名符号,该值用于生成的Android和iOS代码中的各种包和包标识符。

Flutter create --org com.example --plugin Hello

这将在Hello/文件夹中创建一个包含以下内容插件项目:

认情况下,该插件项目使用Objective-C的iOS代码和Java的Android代码。如果您喜欢Swift或Kotlin,则可以使用-i指定iOS语言或使用-a指定Android语言。

Flutter create --plugin -i swift -a kotlin Hello

编辑插件的源代码

插件API代码(.dart)

要编辑Dart插件API代码,需要在IntelliJ IDEA(或者您喜欢的Dart编辑器)中打开Hello/,插件API位于项目视图中显示的lib/main.dart中。

要运行插件,您需要启动插件示例应用程序,这需要定义启动配置:

  1. 选择“Run > Edit Configurations…”@H_772_22@
  2. 选择“+”,然后选择“Flutter”@H_772_22@
  3. 在“Dart entrypoint”,输入<plugin folder>/example/lib/main.dart @H_772_22@
  4. 选择“OK”@H_772_22@
  5. 使用“Run”或“Debug”启动示例应用程序@H_772_22@

Android平台的代码(.java/.kt)

在Android studio中编辑Android平台代码之前,首先要确保代码已经构建至少一次,即从IntelliJ运行示例应用程序,或在终端中执行cd Hello/example; Flutter build apk

接下来,进行以下操作:

  1. 启动Android studio@H_772_22@
  2. 在“Welcome to Android studio”对话框中选择“Import project”,或者在菜单中选择“File > New > Import Project…”,然后选择Hello/example/android/build.gradle文件@H_772_22@
  3. 在“Gradle Sync”对话框中,选择“OK”@H_772_22@
  4. 在“Android Gradle Plugin update”对话框中,选择“Don’t remind me again for this project”@H_772_22@

您的插件的Android平台代码位于Hello/java/com.yourcompany.Hello/HelloPlugin中,您可以通过按▶按钮从Android studio运行示例应用程序。

iOS平台的代码(.h+.m/.swift)

在编辑Xcode中的iOS平台代码之前,首先要确保代码已经构建至少一次,即从IntelliJ运行示例应用程序,或在终端中执行cd Hello/example; Flutter build ios

接下来,进行以下操作:

  1. 启动Xcode@H_772_22@
  2. 选择“File > Open”,然后选择Hello/example/ios/Runner.xcworkspace文件@H_772_22@

插件的iOS平台代码位于项目导航器中的Pods/Development Pods/Hello/Classes/中,您可以通过按▶按钮运行示例应用程序。

管理从Flutter程序到Flutter插件的依赖关系

一旦插件已经发布,您可以依赖它,只需在pubspec.yaml中列出它的名称,比如上面的例子。在开发尚未发布的插件或者不适用于公开发布的私有插件的开发中,依赖于插件还有其他的方法

  • Path依赖:Flutter应用程序可以通过文件系统路径依赖path: dependency,该路径可以是相对的,也可以是绝对路径。例如,要使用位于应用程序旁边的目录中的插件“plugin1”,请使用以下语法:@H_772_22@
dependencies:
  Flutter:
    sdk: Flutter
  plugin1:
    path: ../plugin1/
  • Git依赖:您还可以依赖于存储在Git存储库中的包,包必须位于报告(Repo)的根部,使用以下语法:@H_772_22@
dependencies:
   Flutter:
     sdk: Flutter
   plugin1:
     git:
       url: git://github.com/Flutter/plugin1.git

发布平台插件

一旦你实现了插件,你可以在Pub发布。这使得其他开发人员可以轻松地使用它,如同上述UrlLauncher的演示实例。发布的方法会在以后的文章中详细讲解…

大佬总结

以上是大佬教程为你收集整理的Flutter进阶—平台插件全部内容,希望文章能够帮你解决Flutter进阶—平台插件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。