当前位置: 首页 > news >正文

Flutter 项目结构的区别

  1. 如果需要调用原生代码,请创建一个plugin类型的项目开发。
  2. 如果需要调用C语言,请参考文档:Flutter项目中调用C语言
  3. plugin 其实是 package 的一种,全称是 plugin package,我们简称为 plugin,中文叫插件。

1. Application

Flutter Application 表示一个Flutter项目,主体是Flutter,当然它也可以接入Android Module 或者 iOS Framework,其内部包含 Android 和 iOS 项目。

其目录结构如下:

目录描述备注
androidAndroid原生代码目录。其实就是一个内嵌的Android工程
iosiOS原生代码目录。

其实就是一个内嵌的iOS工程

可以通过xcode 打开 Runner.xcworkspace 进行项目配置

lib这个是Flutter项目的核心目录,我们写的代码放在这个目录,我们也可以在这个目录创建子目录。
test测试代码目录。
pubspec.yaml这个是Flutter项目的依赖配置文件,类似于Android build.gradle文件,这里面包含了Flutter SDK 版本、依赖等。

2. Plugin

Flutter Plugin表示 Flutter 插件,包含 Android 和 iOS 项目,如果你要开发一个 Plugin 且此 Plugin 涉及到原生支持,比如蓝牙功能、网络功能等,这些功能纯 Flutter 是无法实现的。
其目录比 Flutter Application 多了一个 example,example用于当前 Plugin 的demo, Flutter Plugin 开发完成后可以发布到 pub 上。
其目录结构如下:

其pubspec.ymal中多了关于该插件的名称,描述,版本等信息

name: plugin_demo
description: A new Flutter project.
version: 0.0.1
homepage:

此外还多了此插件关于平台的配置

  # This section identifies this Flutter project as a plugin project.# The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.)# which should be registered in the plugin registry. This is required for# using method channels.# The Android 'package' specifies package in which the registered class is.# This is required for using method channels on Android.# The 'ffiPlugin' specifies that native code should be built and bundled.# This is required for using `dart:ffi`.# All these are used by the tooling to maintain consistency when# adding or updating assets for this project.plugin:platforms:android:package: com.example.plugin_demopluginClass: PluginDemoPluginios:pluginClass: PluginDemoPlugin

3. Package

Flutter Package 和 Flutter Plugin 基本一样,唯一的区别是Flutter Package表示纯 Flutter 模块,不需要原生开发,没有Android 和 iOS 项目,比如开发一个纯 UI 的插件。
其目录结构如下:

4. Module

Flutter Module 用于原生项目中插入 Flutter 模块,原生为主体,与 Flutter 进行混合开发。
其目录结构如下:

5. 参考指令

flutter create  指令用法说明

flutter create <output directory>-h, --help                   Print this usage information.--[no-]pub               Whether to run "flutter pub get" after the projecthas been created.(defaults to on)--[no-]offline           When "flutter pub get" is run by the createcommand, this indicates whether to run it inoffline mode or not. In offline mode, it will needto have all dependencies already available in thepub cache to succeed.--[no-]overwrite         When performing operations, overwrite existingfiles.--description            The description to use for your new Flutterproject. This string ends up in the pubspec.yamlfile.(defaults to "A new Flutter project.")--org                    The organization responsible for your new Flutterproject, in reverse domain name notation. Thisstring is used in Java package names and as prefixin the iOS bundle identifier.(defaults to "com.example")--project-name           The project name for this new Flutter project. Thismust be a valid dart package name.
-i, --ios-language           The language to use for iOS-specific code, eitherObjective-C (legacy) or Swift (recommended).[objc, swift (default)]
-a, --android-language       The language to use for Android-specific code,either Java (legacy) or Kotlin (recommended).[java, kotlin (default)]--platforms              The platforms supported by this project. Platformfolders (e.g. android/) will be generated in thetarget project. This argument only works when"--template" is set to app or plugin. When addingplatforms to a plugin project, the pubspec.yamlwill be updated with the requested platform. Addingdesktop platforms requires the correspondingdesktop config setting to be enabled.[ios (default), android (default), windows(default), linux (default), macos (default), web(default)]
-t, --template=<type>        Specify the type of project to create.[app]              (default) Generate a Flutter application.[module]           Generate a project to add a Flutter module to anexisting Android or iOS application.[package]          Generate a shareable Flutter project containingmodular Dart code.[plugin]           Generate a shareable Flutter project containing anAPI in Dart code with a platform-specificimplementation through method channels for Android,iOS, Linux, macOS, Windows, web, or any combinationof these.[plugin_ffi]       Generate a shareable Flutter project containing anAPI in Dart code with a platform-specificimplementation through dart:ffi for Android, iOS,Linux, macOS, Windows, or any combination of these.[skeleton]         Generate a List View / Detail View Flutterapplication that follows community best practices.-s, --sample=<id>            Specifies the Flutter code sample to use as the"main.dart" for an application. Implies"--template=app". The value should be the sample IDof the desired sample from the API documentationwebsite (https://api.flutter.dev/). An example canbe found at:https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html
-e, --[no-]empty             Specifies creating using an application templatewith a main.dart that is minimal, including nocomments, as a starting point for a newapplication. Implies "--template=app".--list-samples=<path>    Specifies a JSON output file for a listing ofFlutter code samples that can be created with"--sample".

例如创建一个插件

flutter create --template=package hello

http://www.lryc.cn/news/440572.html

相关文章:

  • EfficientFormerV2:重新思考视觉变换器以实现与MobileNet相当的尺寸和速度。
  • ASP.NET Core高效管理字符串集合
  • vm-tools的卸载重装,只能复制粘贴,无法拖拽文件!
  • Docker 容器网络技术
  • C++ 起始帧数、结束帧数、剪辑视频
  • 【项目一】基于pytest的自动化测试框架———解读requests模块
  • 升级Ubuntu内核的几种方法
  • Android绘制靶面,初步点击位置区域划分取值测试
  • 【SpringBoot】调度和执行定时任务--Quartz(超详细)
  • 低代码开发平台系统架构概述
  • 源码编译llama.cpp 、ggml 后端启用自定义BLAS加速
  • glb数据格式
  • 手语识别系统源码分享
  • Oracle 数据库部署与实施
  • 【Python】 ast.literal_eval 与 eval
  • Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 新一代垃圾回收器 ZGC 收集器
  • 基于 K8S kubernetes 的常见日志收集方案
  • Unity3D 小案例 像素贪吃蛇 02 蛇的觅食
  • 【sgCreateCallAPIFunction】自定义小工具:敏捷开发→调用接口方法代码生成工具
  • 京东商品详情的 API 探秘与应用
  • 功能测试干了三年,快要废了。。。
  • 【C++】多态的认识和理解
  • linux-安全管理-用户认证
  • webpack5 构建优化方案看这篇就够了!【Node.js进阶】
  • esp32-C2 对接火山引擎实现智能语音(一)
  • 【MySQL-初级】mysql基础操作(账户、数据库、表的增删查改)
  • centos bash脚本一键运行安装go环境
  • vue2制作高复用页面
  • Feed流系统重构:架构篇
  • Android 后台服务之Persistent 属性