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

Flutter学习

Flutter

Dart语言

linux

配置Flutter 国内镜像

✅ 第二步:配置 Flutter 国内镜像(一次到位)

在 Linux 终端执行:

export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter
export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub

为了 永久生效,执行:

echo 'export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter' >> ~/.bashrc
echo 'export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub' >> ~/.bashrc
source ~/.bashrc

✅ 第三步:重新执行命令

flutter config --enable-linux-desktop

Ubunto换软件源

1️⃣ 打开源文件

sudo nano /etc/apt/sources.list.d/ubuntu.sources

2️⃣ 示例:改为清华 TUNA 镜像(LTS 示例)

Ubuntu 22.04 LTS(jammy)

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: jammy jammy-updates jammy-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Ubuntu 24.04 LTS(noble)

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

image-20251222162651181

sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install -y curl git unzip xz-utils zip libglu1-mesa

验证 - USTC 镜像 --- Verifying - USTC Mirrors

在中国网络环境下使用 Flutter

设置flutter环境变量

下面给你一套最规范、最安全、一步到位的做法,适合你现在这个 Flutter 路径
/home/p/flutter/flutter/bin


二、推荐做法(99% 情况适用)

1️⃣ 打开配置文件

nano ~/.bashrc

(如果你用的是 zsh,则是 ~/.zshrc


2️⃣ 在文件末尾添加这一行

export PATH="$PATH:/home/p/flutter/flutter/bin"

注意:

  • 不要删原有内容
  • 不要重复添加多次

3️⃣ 保存并生效

source ~/.bashrc

(zsh 用 source ~/.zshrc


三、立即验证是否成功

which flutter

应该输出类似:

/home/p/flutter/flutter/bin/flutter

再验证版本:

flutter --version

四、如果你想“只对当前终端生效”(临时)

关闭终端后会失效

export PATH="$PATH:/home/p/flutter/flutter/bin"

五、常见错误(务必避免)

整体重写 PATH

PATH="/home/p/flutter/flutter/bin"

忘记 export

PATH="$PATH:/home/p/flutter/flutter/bin"

路径写到 flutter 目录而不是 bin

/home/p/flutter/flutter   # 错

六、Flutter 官方也推荐的方式

Flutter 官方文档就是这个写法,本质上你已经在做“正确的事情”。


总结(记住这一行就够了)

export PATH="$PATH:/home/p/flutter/flutter/bin"

如果你愿意,可以把你 .bashrc.zshrc 里相关的 PATH 部分贴出来,我可以帮你检查是否有重复、冲突或顺序问题。

创建linux项目

Flutter Linux 开发全指南:从环境搭建到应用发布 — geek-blogs.com

WEB

1️⃣ 下载 Chrome 安装包

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

2️⃣ 安装

sudo apt install ./google-chrome-stable_current_amd64.deb

注意有 ./,这是关键


3️⃣ 验证

google-chrome --version

4️⃣ 再跑 Flutter Doctor

flutter doctor

✅ 第 2 步:切换 pub 国内镜像(关键)

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

创建linux flutter项目

打包软件

 dpkg-deb --build deb_package

这个错误非常典型,而且位置一眼就能判断出来。结论很明确:

你现在所在的目录不对,且 deb 包的最关键文件 DEBIAN/control 不存在。

我分两层给你讲:为什么会错 + 正确该怎么做


一、错误原因(先说结论)

dpkg-deb: 无法打开软件包的 info 文件 deb_package/DEBIAN/control
没有那个文件或目录

说明两件事:

  1. deb_package/DEBIAN/control 文件不存在
  2. 你当前路径是:
.../build/linux/x64/release/bundle

这是 Flutter 构建输出目录,不应该在这里打 deb 包


二、deb 包的基本规则(必须满足)

一个合法的 .deb 包目录,至少要有:

deb_package/
├── DEBIAN/
│   └── control        ← 必须存在
└── usr/└── ...

如果 DEBIAN/control 不存在dpkg-deb 一定失败。


三、你现在该怎么做(一步不多,一步不少)

✅ 第 1 步:回到项目根目录(非常重要)

cd ~/flutter/flutter_project/my_linux_app

不要build/ 下面打包。


✅ 第 2 步:创建 deb 目录结构

mkdir -p deb_package/DEBIAN
mkdir -p deb_package/usr/local/bin
mkdir -p deb_package/usr/share/applications

✅ 第 3 步:创建 control 文件(关键)

nano deb_package/DEBIAN/control

填入一个最小可用的示例(可以直接用):

Package: my-linux-app
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: Your Name <you@example.com>
Description: My Flutter Linux Application

注意:

  • Package 只能小写 + -
  • Architecture 对应 x64amd64

✅ 第 4 步:拷贝 Flutter 构建产物(回到你之前那一步)

cp -r build/linux/x64/release/bundle/* deb_package/usr/local/bin/

(这是你之前问过的那条命令,用在这里才是正确的)


✅ 第 5 步:构建 deb 包

dpkg-deb --build deb_package

成功后你会看到:

dpkg-deb: building package 'my-linux-app' in 'deb_package.deb'

四、一个你马上会踩到的坑(提前提醒)

⚠️ 不推荐把 Flutter bundle 直接塞进 /usr/local/bin

这是能跑但不规范。规范做法是:

/usr/local/lib/my_linux_app/   ← bundle
/usr/local/bin/my_linux_app    ← 启动器

如果你愿意,我可以下一步直接帮你改成标准 Debian/FHS 结构,包括:

  • 启动脚本
  • 图标路径
  • .desktop 文件
  • 卸载干净

五、总结一句话

❌ 错误原因:DEBIAN/control 不存在 + 目录位置不对
✅ 正确流程:项目根目录 → 建结构 → 写 control → 拷文件 → dpkg-deb


基础操作

创建项目

flutter create xxx
  1. 启用 Linux 平台

    flutter config --enable-linux-desktop
    

运行 Flutter 应用 :

flutter run
flutter run -d linux  # -d linux 指定运行到 Linux 桌面

Flutter布局

Row:行

Column:列

Center: 中心

常用位置枚举:

位置 含义
endFloat 右下角(默认)
centerFloat 底部居中
startFloat 左下角
endTop 右上
centerDocked 底部居中(配合 BottomAppBar)

Flutter官方文本样式体系

Flutter提供了一套完整的预定义文本样式,用于建立清晰的视觉层次结构:

  • displayLarge - displaySmall :大型展示文本
  • headlineLarge - headlineSmall :标题文本
  • titleLarge - titleSmall :标题栏文本
  • bodyLarge - bodySmall :正文文本
  • labelLarge - labelSmall :标签文本

child → 只能放一个

children → 可以放多个

Column(// ① 主轴对齐(上下)mainAxisAlignment: ...,// ② 交叉轴对齐(左右)crossAxisAlignment: ...,// ③ 占用空间方式mainAxisSize: ...,// ④ 子 Widget 列表children: [...],
)
四、你必须掌握的 Column 4 大属性(入门必会)
1️⃣ children(必须)
dart
复制代码
children: [Widget, Widget, ...]
2️⃣ mainAxisAlignment(上下怎么排)
dart
复制代码
MainAxisAlignment.start    // 顶部
MainAxisAlignment.center   // 中间
MainAxisAlignment.end      // 底部MainAxisAlignment.spaceBetween
MainAxisAlignment.spaceAround
MainAxisAlignment.spaceEvenly
3️⃣ crossAxisAlignment(左右怎么对齐)
dart
复制代码
CrossAxisAlignment.start   // 左对齐
CrossAxisAlignment.center  // 居中
CrossAxisAlignment.end     // 右对齐
CrossAxisAlignment.stretch // 拉伸
4️⃣ mainAxisSize(占多大空间)
dart
复制代码
MainAxisSize.max  // 默认,占满父容器
MainAxisSize.min  // 包住内容
五、再帮你理一遍“child / children”的层级关系
你这段结构其实是:dart
复制代码
Scaffold└─ body└─ Center        ← 只能一个 child└─ Column     ← 有 children├─ Text├─ SizedBox└─ Text
上下居中	mainAxisAlignment
左右居中	crossAxisAlignment
上下排列	Column
左右排列	Row

二、Container 能干什么(全景)

Container(width: 200,              // 宽height: 100,             // 高padding: EdgeInsets.all(16), // 内边距margin: EdgeInsets.all(8),   // 外边距color: Colors.blue,      // 背景色child: Text('Hello'),
)

容器image-20251224153525137

            Container(width: 120, height: 120, color: Colors.blue),
http://www.jsqmd.com/news/371328/

相关文章:

  • Day34client家族和offest家族
  • 如何研究植物生物胁迫中的转录因子? | 生物胁迫专题
  • 永恒不变与顺势而变——银弹何在?
  • 当数字员工融合AI销冠系统,如何实现销量的快速增长?
  • 2机5节点系统潮流仿真模型附Simulink仿真
  • 2025最新高维多目标优化:基于城市场景下无人机三维路径规划的导航变量的多目标粒子群优化算法(NMOPSO)附Matlab代码
  • modbus-通关速成
  • 2026必看!程序员转行大模型指南:系统学习路径+实战项目+收藏必备
  • 智能论文助手推荐:10款AI写作平台详解
  • 5MW风电永磁直驱发电机-1200V直流并网附Simulink仿真模型
  • 第十一章(选学):栈的进阶应用——程序的秘密
  • 2026年APP开发/微信小程序开发服务商/公司排行榜:十大品牌深度测评 - 专业GEO营销推广
  • gRPC 安全完全指南
  • C++精灵库十问十答(C++精灵库简介,C++精灵库下载,C++精灵库教程)
  • 第14章 挂载宿主机目录(Bind Mount)(最常用,重要)
  • 高效AI论文写作工具:10大网站功能对比
  • 第12章 Docker存储机制(重要)
  • Linux创建字符设备
  • C#上位机
  • 概念完整性的力量——架构师与“外科手术队伍”
  • 【最小均方(LMS)算法和归一化最小均方(NLMS)算法进行了比较分析】NLMS比LMS更能抵抗输入相关性研究附Matlab代码
  • STM32 CubeIDE 读取模拟信号电压值
  • 一种基于单目相机的圆柱体/长方体体积测量方法
  • 【状态估计】【雷达】基于扩展卡尔曼滤波的雷达目标跟踪融合研究附Matlab代码
  • 用FastAPI打造LangChain生产级后端架构,小白也能轻松上手
  • 【状态估计】非线性受控动力系统的线性预测器——Koopman模型预测MPC附Matlab代码
  • 【综合能源】电热冷综合能源优化调度研究附Matlab代码
  • 适合转行大模型吗?大模型的未来前景怎么样?普通人转行大模型:收藏这份学习资料,开启高薪未来!
  • 零代码搭建RAG智能客服:7x24小时精准应答,提升效率,收藏必备!