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

【Flutter】基础入门:开发环境搭建

Flutter 是一个强大的跨平台框架,支持在 Android、iOS、Windows、Linux、Web 等多种平台上开发应用。下面将详细介绍如何在各个平台上构建 Flutter 开发环境,并使用相同的项目代码构建出一个可以在多个平台运行的跨平台 Demo。

Flutter 环境配置:Windows、Linux、Android、iOS、Web

通用步骤:安装 Flutter SDK

在不同的操作系统上,首先需要安装 Flutter SDK,这里详细讲解了在 Windows 和 Linux 上安装的步骤。

步骤 1:安装 Flutter SDK
  • 访问 Flutter 官方网站 下载适合操作系统的 Flutter SDK。

  • 解压下载的 SDK 到合适的路径。例如:

    • WindowsC:\src\flutter
    • Linux/opt/flutter
  • flutter/bin 目录添加到系统的 PATH 环境变量中:

    • Windows:在系统环境变量中编辑 PATH
    • Linux:在 ~/.bashrc~/.zshrc 中添加 export PATH="$PATH:/opt/flutter/bin"
步骤 2:运行 Flutter Doctor

打开终端或命令行窗口,运行以下命令,检查是否缺少任何依赖:

flutter doctor

flutter doctor 会检查你的开发环境,并报告任何缺少的依赖,例如 Android SDK、iOS 依赖等。

Windows 环境配置

步骤 3:安装 Android Studio 和 Android SDK

Flutter 需要 Android SDK 来构建 Android 应用。在 Windows 系统中,使用 Android Studio 来管理 Android SDK。

  • 安装 Android Studio。
  • 打开 Android Studio,配置 Android SDK,并下载最新的 Android SDK 工具。
  • 在 Android Studio 中启用 Flutter 和 Dart 插件。
步骤 4:安装 Visual Studio(可选,用于 Windows 桌面开发)
  • 如果你计划在 Windows 桌面上开发 Flutter 应用,需要安装 Visual Studio,并启用“桌面开发”工作负载。
  • 安装 Visual Studio 2022,选择“桌面开发”工作负载。

Linux 环境配置

步骤 3:安装 Android Studio 和 Android SDK

与 Windows 环境相同,Linux 也需要 Android Studio 进行 Android 应用开发。

  • 安装 Android Studio 并配置 Android SDK。
步骤 4:Linux 桌面开发(可选)
  • 安装开发工具:

    sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
    

iOS 环境配置

步骤 3:安装 Xcode

在 macOS 上进行 iOS 开发,需要安装 Xcode。

  • 从 Mac App Store 安装 Xcode。

  • 打开 Xcode,安装必要的工具并接受 Xcode 许可协议:

    sudo xcodebuild -license
    
步骤 4:安装 CocoaPods

Flutter 需要使用 CocoaPods 来管理 iOS 依赖。

sudo gem install cocoapods

Web 环境配置

步骤 3:启用 Flutter Web 支持

在 Flutter 中,默认支持 Web 开发。在安装 Flutter SDK 后,运行以下命令启用 Web 支持:

flutter config --enable-web
步骤 4:安装 Chrome 浏览器

Flutter Web 使用 Chrome 作为默认浏览器进行调试,因此需要安装 Google Chrome。

通用步骤:验证环境配置

运行以下命令,确保 Flutter SDK 配置正确,并安装了相应平台的支持工具:

flutter doctor

确保所有依赖都已安装完毕,尤其是 Android、iOS(仅限 macOS)、Web、桌面等平台的支持。

创建跨平台 Flutter Demo 项目

现在你已经安装了 Flutter 环境,我们可以创建一个简单的跨平台项目,并部署到各个平台上。

步骤 1:创建 Flutter 项目

打开终端或命令行窗口,使用 flutter create 命令创建一个新的 Flutter 项目:

flutter create cross_platform_demo

进入项目目录:

cd cross_platform_demo

步骤 2:编写跨平台代码

打开 lib/main.dart,这是 Flutter 应用的入口文件。我们将编写一个简单的 Flutter 应用,它在多个平台上都可以运行。

import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(title: 'Cross Platform Demo',theme: ThemeData(primarySwatch: Colors.blue,),home: const MyHomePage(),);}
}class MyHomePage extends StatelessWidget {const MyHomePage({super.key});Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('Cross Platform Demo'),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: const <Widget>[Text('This is a cross-platform app!',style: TextStyle(fontSize: 20),),SizedBox(height: 20),Icon(Icons.flutter_dash, size: 100),],),),);}
}

这是一个简单的 Flutter 应用,显示文本和一个 Flutter 图标。接下来,我们将构建并运行该应用。

步骤 3:构建与运行 Flutter 应用

运行在 Android 上
  1. 启动 Android 模拟器或连接 Android 真机设备。

  2. 在终端中运行以下命令构建并运行应用:

    flutter run
    
  3. 如果有多个设备可用,Flutter 会要求你选择设备。

运行在 iOS 上(仅限 macOS)
  1. 启动 iOS 模拟器或连接 iPhone 设备。

  2. 在终端中运行以下命令:

    flutter run
    
运行在 Web 上
  1. 确保 Chrome 浏览器已安装。

  2. 使用以下命令运行 Web 版本:

    flutter run -d chrome
    
运行在 Windows 桌面上
  1. 确保已安装 Visual Studio 并启用了 Windows 桌面支持。

  2. 使用以下命令运行 Windows 版本:

    flutter run -d windows
    
运行在 Linux 桌面上
  1. 确保已安装 Linux 桌面支持所需的工具。

  2. 使用以下命令运行 Linux 版本:

    flutter run -d linux
    

步骤 4:构建应用发布包

构建 Android APK

要构建 Android APK,运行以下命令:

flutter build apk

构建完成后,APK 文件将生成在 build/app/outputs/flutter-apk/ 目录下。

构建 iOS IPA(仅限 macOS)

要构建 iOS 应用,运行以下命令:

flutter build ios

该命令会生成一个 Xcode 项目,你可以通过 Xcode 将应用部署到设备或 App Store。

构建 Web 应用

要构建 Web 版本,运行以下命令:

flutter build web

构建完成后,静态网站文件将生成在 build/web/ 目录下。

总结

通过上述步骤,我们详细讲解了如何在 Windows、Linux、Android、iOS 和 Web 平台上配置 Flutter 开发环境,并通过相同的代码构建出一个可以在多个平台运行的跨平台 Demo。Flutter 的跨平台特性使得开发者只需编写一次代码,即可在不同平台上发布应用。

相关文章:

【Flutter】基础入门:开发环境搭建

Flutter 是一个强大的跨平台框架&#xff0c;支持在 Android、iOS、Windows、Linux、Web 等多种平台上开发应用。下面将详细介绍如何在各个平台上构建 Flutter 开发环境&#xff0c;并使用相同的项目代码构建出一个可以在多个平台运行的跨平台 Demo。 Flutter 环境配置&#x…...

AI学习指南深度学习篇-对比学习(Contrastive Learning)简介

AI学习指南深度学习篇 - 对比学习&#xff08;Contrastive Learning&#xff09;简介 目录 引言对比学习的背景对比学习的定义对比学习在深度学习中的应用 无监督学习表示学习 详细示例 基本示例先进示例 对比学习的优缺点总结与展望 1. 引言 随着人工智能&#xff08;AI&am…...

【蓝队技能】【规则开发1】Suricata-C2Webshell隧道

蓝队技能 Suricata-C2&Webshell&隧道 蓝队技能总结前言一、C2规则开发1.1 Sliver1.2 CS 二、内网隧道1.1 frps1.2 nps 三、webshell3.1 蚁剑3.2 冰蝎3.3 哥斯拉 总结 前言 本文聚焦于Suricata规则开发&#xff0c;提供针对Sliver、Cobalt Strike&#xff08;CS&#xf…...

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法&#xff0c;以应对不同的流量分发需求。常用的算法包括&#xff1a;最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义&#xff0c;每种算法都有其独特的应用场景。 以下负载均衡方法&#xff08;IP 哈希除…...

Java-继承与多态-上篇

关于类与对象&#xff0c;内容较多&#xff0c;我们分为两篇进行讲解&#xff1a; &#x1f4da; Java-继承与多态-上篇&#xff1a;———— <就是本篇> &#x1f4d5; 继承的概念与使用 &#x1f4d5; 父类成员访问 &#x1f4d5; super关键字 &#x1f4d5; supe…...

通过比较list与vector在简单模拟实现时的不同进一步理解STL的底层

cplusplus.com/reference/list/list/?kwlist 当我们大致阅读完list的cplusplus网站的文档时&#xff0c;我们会发现它提供的接口大致上与我们的vector相同。当然的&#xff0c;在常用接口的简单实现上它们也大体相同&#xff0c;但是它们的构造函数与迭代器的实现却大有不同。…...

软件I2C的代码

I2C的函数 GPIO的配置——scl和sda都配置为开漏输出 void MyI2C_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStruture;GPIO_InitStruture.GPIO_Mode GPIO_Mode_Out_OD;GPIO_InitStruture.GPIO_PinGPIO_Pin_10 | GPIO_Pin_…...

登录时用户名密码加密传输(包含前后端代码)

页面输入用户名密码登录过程中&#xff0c;如果没有对用户名密码进行加密处理&#xff0c;可能会导致传输过程中数据被窃取&#xff0c;就算使用https协议&#xff0c;在浏览器控制台的Request Payload中也是能直接看到传输的明文&#xff0c;安全感是否还是不足。 大致流程&a…...

ai聊天对话页面-uniapp

流式传输打字机效果&#xff0c;只支持uniapp内使用 &#xff0c;下载地址 https://download.csdn.net/download/qq_54123885/89899859...

虚拟滚动列表如何实现?

highlight: a11y-dark 虚拟滚动列表&#xff0c;虚拟滚动的关键在于只渲染当前视口内可见的数据项&#xff0c;而不是一次性渲染所有数据项。这可以显著提高性能&#xff0c;尤其是在处理大量数据时。 以下是一个完整的虚拟滚动列表的示例代码&#xff1a; <!DOCTYPE htm…...

07_Linux网络配置与管理:命令与工具指南

本系列文章导航&#xff1a;01_Linux基础操作CentOS7学习笔记-CSDN博客 文章目录 网络配置与管理&#xff1a;命令与工具指南1. ping命令2. ifconfig命令3. ip命令4. route命令5. ip route命令6. nslookup命令7. nmcli命令8. nmtui命令9. RHEL7修改网卡名1. 修改网络(会话)配置…...

首个统一生成和判别任务的条件生成模型框架BiGR:专注于增强生成和表示能力,可执行视觉生成、辨别、编辑等任务

BiGR是一种新型的图像生成模型&#xff0c;它可以生成高质量的图像&#xff0c;同时还能有效地提取图像特征。该方法是通过将图像转换为一系列的二进制代码来工作&#xff0c;这些代码就像是图像的“压缩版”。在训练时会遮住一些代码&#xff0c;然后让模型学习如何根据剩下的…...

【Java知识】Java进阶-服务发现机制SPI

文章目录 SPI概述SPI 工作原理 ServiceLoader代码展示简化的 ServiceLoader 类关键点解释使用示例1. 定义服务接口2. 实现服务提供者3. 配置文件4. 加载服务提供者 总结 SPI使用场景1. 数据库驱动2. 日志框架3. 图像处理4. 加密算法5. 插件系统6. 缓存机制示例代码1. 定义服务接…...

多模态技术的协同表现:从文本生成、语音合成到口型同步综合测评

本文是针对多模态对话系统核心技术栈的使用效果和网络测评整理。 测评内容基于用户体验&#xff0c;侧重于从使用者角度出发&#xff0c;讨论实际操作中的体验感受&#xff0c;如技术的易用性、输出效果如文本的连贯性、语音的自然度、口型同步的准确性等。不涉及具体算法架构…...

Java最全面试题->Java主流框架->Srping面试题

Spring面试题 下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图 哪里不会点哪里 谈谈你对 Spring 的理解? Spring 是一个开源框架,为简化企业级应用开发而生。Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。…...

参编国家标准需要注意的事项有哪些?

1. 项目相关性&#xff1a; • 选择与自身企业产品、业务或专业领域紧密相关的国家标准进行参编。这样不仅能确保企业在标准制定过程中发挥自身的优势和专长&#xff0c;使参编工作更有实际意义和价值&#xff0c;也有利于企业将标准更好地应用于自身的生产经营活动&#xff0c…...

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件&#xff0c;它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…...

01 springboot-整合日志(logback-config.xml)

logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件&#xff0c;通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。 Logback 提供了丰富的配置选项&#xff0c;可以满足各种不同的日志需求。需要根据具体情况进行配置。 项目创建&#xff0…...

Java最全面试题->计算机基础面试题->计算机网络面试题

计算机网络 下边是我自己整理的面试题&#xff0c;基本已经很全面了&#xff0c;想要的可以私信我&#xff0c;我会不定期去更新思维导图 哪里不会点哪里 1.说一下TCP/IP四层模型 TCP/IP协议是美国国防部高级计划研究局为实现ARPANET互联网而开发的。 网络接口层&#xff…...

VSCode编译器改为中文

1. 通过快捷键设置中文 打开命令面板&#xff1a;按住键盘上的CtrlShiftP组合键&#xff0c;打开命令面板。 输入并设置语言&#xff1a;在命令面板中输入Configure Display Language。 点击Configure Display Language选项。 在弹出的语言选择列表中&#xff0c;选择zh-cn…...

Apprise:一个库统治所有推送通知平台的终极解决方案

Apprise&#xff1a;一个库统治所有推送通知平台的终极解决方案 前言 在日常开发与运维工作中&#xff0c;我们经常需要将系统状态、告警信息或业务事件通过各种渠道推送给相关人员——可能是 Telegram、企业微信、钉钉、邮件&#xff0c;也可能是 Slack、Discord 或 PushBulle…...

Claude Code源码阅读分享

Claude Code 源码阅读分享 链接: https://pan.baidu.com/s/1oSUWD11Yjrn5_pVVfK8Y9g?pwdv4ta Quick Start Option 1: Use with Claude Code (Recommended) # Copy agents to your Claude Code directory cp -r agency-agents/* ~/.claude/agents/# Now activate any agent in …...

HagiCode Soul 平台技术解析:从需求萌发到独立平台的演进之路

先回顾&#xff1a;三次握手&#xff08;建立连接&#xff09;核心流程&#xff08;实际版&#xff09; 为了让挥手流程衔接更顺畅&#xff0c;咱们先快速回顾三次握手的实际核心&#xff0c;避免上下文脱节&#xff1a; 第一步&#xff08;客户端→服务器&#xff09;&#xf…...

IntelliJ IDEA开发Qwen3-TTS-12Hz-1.7B-CustomVoice插件教程

IntelliJ IDEA开发Qwen3-TTS-12Hz-1.7B-CustomVoice插件教程 1. 引言 你是不是经常需要在开发过程中生成语音内容&#xff1f;比如给应用添加语音提示、制作有声说明文档&#xff0c;或者只是想给枯燥的编程生活加点声音乐趣&#xff1f;今天我要带你用IntelliJ IDEA开发一个…...

手机号查QQ号终极指南:3分钟快速找回遗忘的QQ号码

手机号查QQ号终极指南&#xff1a;3分钟快速找回遗忘的QQ号码 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾因忘记QQ号而无法登录&#xff1f;是否因为更换手机需要重新绑定QQ却找不到账号信息&#xff1f;手机号查QQ号工…...

Nvidia、谷歌、MiniMax、阶跃星辰等60+实战专家齐聚,2026 奇点智能技术大会最新最全日程发布!

责编 | 梦依丹出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;昨晚&#xff0c;AI 圈彻夜无眠。Claude Code 51 万行源码泄露引发众多开发者连夜 Fork 拆解&#xff0c;OpenAI 创纪录的 1220 亿美元天价融资……这一系列令人眩晕的数字和事件&#xff0c;折射出一个…...

千问3.5-9B模型切换指南:OpenClaw多模型动态调用

千问3.5-9B模型切换指南&#xff1a;OpenClaw多模型动态调用 1. 为什么需要多模型动态调用 上周我尝试用OpenClaw自动整理电脑里积压的300多份PDF文档时&#xff0c;遇到了一个有趣的现象&#xff1a;处理简单文件重命名任务时&#xff0c;轻量级模型响应飞快&#xff1b;但遇…...

GEE引擎封挂实战:从M2参数到RunGate网关的完整配置指南

GEE引擎封挂实战&#xff1a;从M2参数到RunGate网关的完整配置指南 在游戏运营过程中&#xff0c;外挂问题一直是困扰开发者和运营者的顽疾。对于使用GEE引擎的游戏服务器来说&#xff0c;如何有效防范和打击外挂行为&#xff0c;维护游戏公平性&#xff0c;是每个技术团队必须…...

Python程序设计期末考试高频大题精讲:二维列表数据处理实战与深度解析

Python程序设计期末考试高频大题精讲&#xff1a;二维列表数据处理实战与深度解析 摘要&#xff1a;本文以高校计算机科学与技术专业《Python程序设计》期末考试中一道典型大题——“统计学生捐款次数”为切入点&#xff0c;系统讲解二维列表&#xff08;嵌套列表&#xff09;的…...

雷小兔:让学术论文排版变得简单高效

产品概述 雷小兔是一款专门为学生和研究人员设计的学术论文辅助工具。无论你是在准备毕业论文、学位论文还是学术发表&#xff0c;雷小兔都能为你提供全面的支持和帮助。 论文排版方面的核心优势 1. 模板齐全&#xff0c;开箱即用 雷小兔内置了数十种符合国内外高校标准的论…...