Flutter Advanced - Desarrollo de paquetes y complementos

FlutterHay dos tipos de herramientas de terceros, uno es un complemento Pluginy el otro es un Packagepaquete. La diferencia entre los dos es que Pluginno solo contiene Dartcódigo, sino también código nativo nativo, como el que se usa comúnmenteimage_picker

Packagedesarrollar

1. Crea Dartel paquete

flutter create --template=package 'package_name'
复制代码

imagen.png

Abra el archivo, encontramos que no hay código nativo en él, solo hay un archivo dart en él

imagen.png

Tomando el WeChat anterior Index_Barcomo ejemplo, busque el archivo y cópielo aquí para resolver el error (principalmente el problema de la fuente de datos, que también se copia directamente de una manera simple y grosera). para hacer frente a los recursos de imagen? Eso sí, trata de no usar recursos de imagen si puedes usar recursos.

2. Añade recursos de imagen

new-DirectoryCree un imagesarchivo, luego agregue el recurso de imagen, abra el pubspecy.yamlarchivo y configure el recurso aquíimagen.png

Al mismo tiempo, configure la siguiente version/homepageinformación en esta página. Ahora puedes intentar publicar

3. Publicar el paquete Dart

revisa el paquete

flutter packages pub publish --dry-run
复制代码

Si aparece el siguiente mensaje, significa que no falta el archivo del paquete que actualmente está listo para publicarse y que se puede iniciar la publicación.imagen.png

La publicación de complementos y paquetes requiere una cuenta de Google, así como over-the-wall y autorización, pero a veces, incluso si hacemos over-the-wall, no puede resolver el problema, porque también hemos configurado espejos relacionados, por lo que cuando publicamos complementos o paquetes, aparecerá error de espejo. Solucionar esto también es muy simple y complicado, podemos especificar el servidor a publicar, y este servidor es el servidor espejo.

flutter packages pub publish --server=https://pub.dartlang.org
复制代码

Luego aparecerá el siguiente mensaje, que es para autorizar a Google, asignar la dirección intermedia y luego abrirlo con un navegadorimagen.png

Estoy aquí por motivos de red, por lo que la carga no se realiza correctamente.

4.uso del paquete

Vuelva al proyecto de WeChat anterior, agregue el paquete que acaba de cargar aquí y luego pug gethaga clic enimagen.png

在项目中使用的时候为了避免和其他的库冲突,可以使用as。使用现在的package替换掉项目中indexBar的地方,运行我们发现图片没有了。打开package_demo的framework发现加载进来的只有一个dart文件,图片之类的没有加载进来。怎么解决

5.image资源添加

非常简单,我们需要把images这个文件夹移动到lib文件夹之内 imagen.png

使用的话也非常简单,指定包名就可以。

child: Image.asset('images/bubble.png', package: 'package_demo',),
复制代码

更新版本到0.0.2``CHANGELOG.mdpubspec.yaml文件同步更新版本。回到微信的工程 imagen.png

在资源里面指定图片所在的位置的全路径,必须全路径,不可以简化!!!

6.给package添加示例程序

imagen.png

配置pubspec.yaml指定路径 imagen.png

同时在示例程序的assets指定package使用到的图片的路径!!! 接着把把example中的代码加入到package_demo中,新建一个example的文件夹,然后把package_example中的main.dart添加到pakage_demoimagen.png

7.part使用

如果package中的文件比较多的话,我们可以使用part来分开。 imagen.png

我们在子部分标注好归属,这里是在index_bar.dart文件里写入

part of 'package_demo.dart';
复制代码

package_demo.dart中写入

library package_demo;
import 'package:flutter/material.dart';
part 'index_bar.dart';
复制代码

同时一般含有example的package包的版本必须是1.0.0+

Plugin开发

1.创建插件plugin

要创建插件包,使用--template=plugin执行flutter create

flutter create --template=plugin 'plugin_name'
复制代码

使用--org选项指定你的组织,并使用反向域名表示法(package不需要)

flutter create --org com.example --template=plugin 'plugin_name'
复制代码

指定语言,iOS默认是OC,安卓默认是Java, 我们可以使用-i或者-a 来指定语言

flutter create --template=plugin -i swift -a kotlin 'plugin_name'
复制代码

También puede usar AS para crearlo directamente.Después de abrir el proyecto, puede ver que contiene códigos nativos relacionados con Android e iOS. Después de ejecutarse, el programa de muestra predeterminado es obtener el código de la versión actual del teléfono móvil getPlatformVersion, agreguemos algunos otros códigos.imagen.png

Si lo agrega directamente en iOS, generalmente no hay aviso. Podemos volver al proyecto example-ios-Runnerpara escribir aquí y luego copiarlo en el siguiente archivo después de escribir.imagen.png

2. Publicar

La verificación de paquetes y la especificación de versiones del servidor son lo mismo que los paquetes.

Supongo que te gusta

Origin juejin.im/post/7088624621141884965
Recomendado
Clasificación