Flutter 项目创建、运行及结构分析

news2024/11/27 6:28:32

目录

开发工具 

创建项目

  1.New Flutter Project

        1.1直接创建新项目

        1.2 已有项目创建新项目

  2.选择SDK,补充项目资料

  3.Demo已生成

        3.1 android 目录

        3.2 ios目录

        3.3 lib目录    

        3.4 test 目录(可先不管)

4.配置文件

        4.1 pubspec.yaml文件

        4.2 pubspec.lock

        4.3 .packages

        4.4 .metadata

        4.5 .gitignore

使用Xcode打开Flutter项目

        1.打开Xcode,选择 Open a project or file

        2.找到项目所在路径,选中ios/Runner.xcworkspace

         3.运行Xcode项目


开发工具 

        1.Android Studio

        2.Visual Studio Code

      作为一个Android开发者,已安装 Android Studio 所以就在AS上面直接演示了。

创建项目

  1.New Flutter Project

        1.1直接创建新项目

        1.2 已有项目创建新项目

  2.选择SDK,补充项目资料

  3.Demo已生成

        可以看到,一个完整的Flutter主要有以下几个组成部分:

        3.1 android 目录

        这个android目录其实就是一个完整的Android项目,里边的组织结构和用Android Studio直接创建的Android项目是一样的。代码最终会被编译成Android平台运行的代码,入口文件是MainActivity.kt或者MainActivity.java,如果要加权限设置闪屏页等特性化的操作都可以在里面进行设置。

        3.2 ios目录

        ios目录和android目录一样,存放的是iOS的项目文件,也是一个完整的iOS项目,可以在Xcode上进行开发、编译、调试等操作。     

        3.3 lib目录    

        lib目录存放的是实现项目核心逻辑的dart文件,新创建的Flutter项目会默认有一个main.dart文件作为项目的入口文件。lib包下的代码文件最终会被渲染到android和ios两个平台。也就是说,Flutter开发写的代码都在这个文件夹下

        3.4 test 目录(可先不管)

        test目录主要存放测试代码,比如测试UI、数据等等,默认有一个widget_test.dart文件,可以单独运行这个dart测试文件进行测试。

4.配置文件

        4.1 pubspec.yaml文件

        这个文件是整个Flutter项目的配置文件,类似Android项目中的build.gradle文件。

# 应用名称
name: flutter_demo_scc
# 应用介绍
description: A new Scc Flutter project.
# 如果要发布到pub.dev,请删除此行
publish_to: 'none'
# 版本号,区分Android和IOS
# +号前,对应Android的versionName,iOS的CFBundleShortVersionString
# +号后,对应Android的versionCode,iOS的CFBundleVersion
version: 1.0.0+1

# 编译要求的dart版本号区间
environment:
  sdk: '>=3.0.2 <4.0.0'

# 插件库
dependencies:
  flutter:
    sdk: flutter
# https://pub-web.flutter-io.cn/ 想要插件就自己去搜,去找
# 例如 http、shared_preferences、fluttertoast
# 导入三方库 库名签名空两格,库名和版本中间有一个空格。
# 别问,问就是规定
  cupertino_icons: ^1.0.2
# 闪屏页
  flutter_splash_screen: ^1.0.0+6
  fluttertoast: ^8.2.2
# 网络请求库
  http: ^1.0.0
  crypto: ^3.0.3
  event_bus: ^2.0.0
  shared_preferences: ^2.1.1
dev_dependencies:
  flutter_test:
    sdk: flutter

  flutter_lints: ^2.0.0

flutter:
  # 使用Material风格的图标和文字
  uses-material-design: true
  # 引入图标 同时在项目下创建images文件
  assets:
    - images/
  
  # 下面是字体库没用过哦
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700

        4.2 pubspec.lock

        标明了Flutter项目依赖的一些包、库以及插件的版本等信息,如果某个包或者库文件丢失,可以通过这个文件重新下载。

        4.3 .packages

        里边标明了仙姑依赖的包、库以及插件在本机的绝对路径,如果项目出错或者找不到某个库,可以把这个文件删除,重新自动配置。

        4.4 .metadata

        记录了项目是在哪个分支开发,项目属性等信息,用于切换分支,升级SDK,自动生成,无需修改删除。

        4.5 .gitignore

        git的忽略文件,添加到这个文件中的文件信息不会被添加到版本控制中。之前开发肯定也配置过。如下:

*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/workspace.xml
.DS_Store
/build
/captures
.externalNativeBuild

使用Xcode打开Flutter项目

        1.打开Xcode,选择 Open a project or file

        2.找到项目所在路径,选中ios/Runner.xcworkspace

         3.运行Xcode项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python报错重新执行技巧

Python报错重新执行技巧 如果你在使用Python编程时&#xff0c;经常遇到报错的情况&#xff0c;特别是在大量数据处理或者复杂算法实现时&#xff0c;报错更是常态。那么&#xff0c;你是否不知道该如何处理这些报错信息&#xff0c;或者对于重新执行代码有一些不确定的想法&a…

【Leetcode60天带刷】day15二叉树——102. 二叉树的层序遍历 ,226.翻转二叉树 ,101.对称二叉树 2

题目&#xff1a; 102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],…

嵌入式系统课程设计——温度记录仪

课程设计目录 一、嵌入式系统基础实验 二、项目需求分析 三、实验方案设计 四、实验程序设计 五、成本核算情况 八、完成情况与问题分析 九、学习心得 一、嵌入式系统基础实验 1.1实验平台的使用 图1 建立新工程图片 图2 选择lpc1114芯片图片 图3 选择头文件图片 图4 编译…

基于51单片机数字频率计的设计与实现

目录 第一章 系统原理与总体设计 1.1系统组成 1.2系统原理 1.3测量原理 1.4频率测量与总体设计 第二章 硬件电路设计 2.1硬件电路框图 2.2数字频率计原理图 2.3硬件电路设计 第三章 软件程序设计 3.1程序流程图 3.2显示电路程序设计 3.3 定时器初始化程序设计 3.4…

MeetingService重构和ParticipantList性能优化实践

​ 一丶背景 1.1 现状 最初Rooms客户端只支持加入Rcv meeting这个meeting type&#xff0c;RcvMeetingStateService里写了一些加会的状态机转换和Audio, Video, Share相关的功能代码。后续有新的业务&#xff0c;需要增加支持Webinar, Sip等各种Meeting&#xff0c;MeetingS…

Linux Shell 实现一键部署ovirt4

ovirt 前言 oVirt是一个开源分布式虚拟化解决方案&#xff0c;旨在管理您的整个企业基础设施。oVirt使用可信的KVM管理程序&#xff0c;并基于其他几个社区项目构建&#xff0c;包括libvirt、Gluster、PatternFly和Ansible。 Ovirt仅支持系统Centos / Redhat ovirt download…

npm利用verdaccio工具发布到私有仓库的教程

文章目录 概要安装方式运行方式相关的配置淘宝源修改开发访问地址设置用户删除用户更换源设置发布当前包 概要 提示&#xff1a;用于将可复制和常用的方法打包发布 例如&#xff1a; 可以将我们的公共组件和工具类以及SDK等核心的代码发布到外网中&#xff0c;需要我们常见私…

小白到运维工程师自学之路 第三十五集 (MongoDB的基本使用)

一、概述 MongoDB是一个非关系型数据库管理系统&#xff0c;它使用文档模型存储数据。MongoDB中的文档类似于JSON对象&#xff0c;可以包含键值对和嵌套文档。MongoDB提供了强大的查询语言、聚合框架、索引和直接在数据存储中运行的计算。 MongoDB被广泛应用于许多领域&#x…

MySQL开启远程访问权限

默认情况下&#xff0c;MySQL只允许本地登录&#xff0c;即只能在安装MySQL环境所在的主机下访问。 但是在日常开发和使用中&#xff0c;我们经常需要访问远端服务器的数据库&#xff0c;此时就需要开启服务器端MySQL的远程连接权限。1、生成环境&#xff0c;连接MySQL 2、查看…

STM32单片机(六)TIM定时器 -> 第七节:TIM编码器接口

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

vue引入jszip下载多个图片并压缩下载

vue引入jszip下载多个图片并压缩下载 jszip官网地址 先进行jszip下载 npm install jszip然后废话不多说直接上代码 <template><div><button click"downloadImages">下载图片</button></div> </template><script> impo…

shell内置命令

目录 内置命令介绍内置命令列表alisa内置命令alias别名定义语法unalias 别名删除语法alias演示 echo内置命令echo命令介绍echo输出语法echo输出转义字符 read内置命令介绍语法options支持的参数示例1&#xff1a;多个变量赋值 exit内置命令介绍语法示例&#xff1a;Shell脚本文…

OPC AE server服务的实现

OPC AE server的实现 日前实现了OPC AE server&#xff0c;特此记录备查。 1、事件分三类&#xff0c;从下图可知每类都包含啥内容了&#xff0c;CONDITION看起来主要是一些越限&#xff0c;熟悉其它协议的朋友应该对这个不陌生&#xff0c;一般这种事件产生时&#xff0c;会…

通过Selenium实现Web自动化测试的研究

目录 前言&#xff1a; 1 自动化测试概念 1.2 自动化测试发展阶段 2 自动化测试工具Selenium简介 3 具体测试过程 4 总结 前言&#xff1a; Web自动化测试是Web应用程序测试的重要组成部分&#xff0c;它通过模拟实际用户行为&#xff0c;对Web应用程序进行自动化测试并…

chatgpt赋能python:Python拆包:提高编程效率的神器

Python拆包&#xff1a;提高编程效率的神器 在Python编程中&#xff0c;拆包&#xff08;unpacking&#xff09;是一项非常有用的技巧。它可以让你将一个可迭代对象&#xff08;iterable&#xff09;中的元素分离开来&#xff0c;赋值给多个变量。这个过程一般称为“解包”&am…

小白到运维工程师自学之路 第三十八集 (redis高可用集群)

一、概述 Redis高可用集群是一种分布式系统&#xff0c;它由多个Redis节点组成&#xff0c;可以提供高可用性和容错性。在Redis高可用集群中&#xff0c;每个节点都可以处理客户端请求&#xff0c;并且数据会在多个节点之间进行复制和同步&#xff0c;以确保数据的可靠性和一致…

Day_51-53kNN分类器

目录 Day_51&#xff1a;kNN分类器 一. 前言 二. 机器学习基本术语 三. kNN算法的原理 1. kNN算法的思想 2. kNN算法的具体实现过程 四. 代码实现 1. 导包 2. 参数初始化 3. 数据的导入 4. 数据的抽取 5. 对于测试集进行预测 6. 核心代码 Day_52&#xff1a;knn分类器&am…

LabVIEW开发微控制器控制的并行机器人的实时视觉图像处理

LabVIEW开发微控制器控制的并行机器人的实时视觉图像处理 通过相机视觉&#xff0c;以对目标物体的不同颜色进行分类&#xff0c;并与平行机器人一起拾取和放置物体。通过使用MATLAB Simulink模拟合适的机器人工作空间来研究使用相机的效率和机器人的准确性。机械臂以使用运动学…

OpenMMLab-AI实战营第二期——5-2. MMSegmentation代码课

文章目录 1. 自定义数据集1.0 整理数据集为特定格式1.1 持久化运行&#xff08;用文件定义&#xff09;1.2 运行时生效&#xff08;直接运行时定义一个class&#xff09;1.3 注意事项 2. 配置文件3. 运行训练和测试X. 其他语义分割数据集 视频链接&#xff1a;MMSegmentation代…

ThreadPoolExecutor源码

介绍 ThreadPoolExecutor 是 Java 中实现线程池的一个类&#xff0c;它是 ExecutorService 接口的一个实现类。线程池可以用来优化线程的使用&#xff0c;避免频繁地创建和销毁线程&#xff0c;以及限制并发线程的数量&#xff0c;从而提高应用程序的性能。 public class Thr…