Flutter 工程环境、插件使用、protobuf配置与字体/持久化管理

Flutter 工程环境、插件使用、protobuf配置与字体/持久化管理


🧭 Flutter 常用开发配置与功能实践笔记


一、📦 从 pubspec.yaml 中获取项目版本号

dart 复制代码
import 'package:flutter/services.dart' show rootBundle;
import 'package:yaml/yaml.dart';

Future<void> _getVersion() async {
  final yamlString = await rootBundle.loadString('pubspec.yaml');
  final yamlMap = loadYaml(yamlString);
  final version = yamlMap['version'];
  print('App version: $version');
}

🔍 说明

  • 通过 rootBundle.loadString() 读取项目根目录下的 pubspec.yaml 文件;
  • 使用 yaml 包 (import 'package:yaml/yaml.dart';) 解析 YAML 内容;
  • 获取 version 字段值 --- 用于展示或版本控制。

二、🧱 常用插件分类与用途

插件名 功能说明 备注
get_storage 数据持久化插件,实现轻量化键值对存储 初始化后可直接读写
adaptive_breakpoints 响应式布局插件,根据屏幕宽度自适应布局 常用于 Web / 多平台开发
dual_screen 双屏与折叠屏设备支持插件 用于双屏设备的布局适配
arp_cache_loader 获取本地网络设备的 MAC 地址信息 适用于局域网设备扫描与调试

三、🌐 获取本机 MAC 地址示例(使用 arp_cache_loader

dart 复制代码
import 'package:arp_cache_loader/arp_cache_loader.dart';

void main() async {
  // ① 原始 ARP 缓存作为字符串
  final String rawArpCache = await ArpLoader.loadRawArpCache();
  print('Raw ARP cache: $rawArpCache');

  // ② ARP 缓存以 Map 形式加载
  final Map<String, String> arpCacheMap = await ArpLoader.loadArpCacheAsMap();
  print('ARP cache (Map): $arpCacheMap');

  // ③ 示例:打印第一个 MAC 地址
  print("First MAC: ${arpCacheMap.entries.first.value}");
}

💡 MAC 地址基础知识

  • MAC 地址 是由网卡厂商依据 IEEE 规则分配的全球唯一硬件标识;
  • 前 3 字节为 OUI(组织唯一标识符)
  • 每个网络接口卡(NIC)对应唯一 MAC 地址:
    • 仅有一个以太网口 → 1 个 MAC;
    • 同时有以太网与 Wi-Fi → 各自对应一个 MAC;
    • 服务器具多个端口 → 可能有多个 MAC 地址。

四、🧩 Protobuf 编译与使用流程

1️⃣ 创建 .proto 文件

proto 复制代码
syntax = "proto3";
package myapp;

message Person {
  string name = 1;
  int32 age = 2;
}

2️⃣ 安装并配置 Protobuf

bash 复制代码
# 解压 protoc 安装包
$ cd ~/Application/protoc-24.3-linux-x86_64/
$ export PATH="$PATH":"$PWD/bin"

3️⃣ 安装 Dart 插件

bash 复制代码
flutter pub global activate protoc_plugin

⚠️ 请确保 $HOME/.pub-cache/bin 已添加到 PATH 中:

bash 复制代码
export PATH="$PATH":"$HOME/.pub-cache/bin"

4️⃣ 添加依赖

bash 复制代码
flutter pub add protobuf
flutter pub add fixnum

5️⃣ 生成 Dart 文件

bash 复制代码
protoc --dart_out=./lib/protos ./lib/protos/message.proto

五、🔤 字体加载与 Google Fonts 本地化

dart 复制代码
import 'package:google_fonts/google_fonts.dart';

void main() async {
  GoogleFonts.config.allowRuntimeFetching = false;
  // 禁止运行时从 Google Fonts 服务器下载字体
}

📘 说明

  • allowRuntimeFetching = false 表示:
    • 应用在运行时不会从 Google Fonts 在线获取字体;
    • 需提前下载字体并在本地项目中包含;
  • 适用于性能优化或需完全离线运行的应用。

🪶 字体默认规则拓展

系统 默认字体 说明
Android / Material Roboto MaterialApp 默认字体
iOS / Cupertino San Francisco CupertinoApp 默认字体

🧩 可在 pubspec.yaml 中声明自定义字体资源,并通过 TextStyle(fontFamily: 'MyFont') 使用。


六、💾 Flutter 数据持久化 --- 使用 get_storage

get_storage 是轻量级、高性能的本地键值对存储插件。

🧱 初始化

dart 复制代码
import 'package:get_storage/get_storage.dart';

void main() async {
  await GetStorage.init(); // 初始化本地存储
  runApp(MyApp());
}

⚙️ 使用方法

dart 复制代码
final box = GetStorage();

// 写入数据
box.write('username', 'Ada');

// 读取数据
print(box.read('username')); // 输出: Ada

💡 特性

  • 无需复杂数据库, 适合存储配置/缓存;
  • 读写快速, 立即生效;
  • 跨启动持久化, 程序重启后仍可访问。

✅ 总结

分类 插件 / 技术 功能概要
项目信息读取 loadYaml + rootBundle 从 pubspec.yaml 读取版本
数据持久化 get_storage 快速键值存储
布局适配 adaptive_breakpoints 响应式布局
双屏设备 dual_screen 折叠屏 / 双屏支持
网络信息 arp_cache_loader 设备 MAC 地址读取
字体优化 GoogleFonts.config 禁止字体运行时动态抓取
Protobuf protoc_plugin + protobuf 跨语言高效数据结构定义
相关推荐
奋斗的小青年!!3 小时前
Flutter浮动按钮在OpenHarmony平台的实践经验
flutter·harmonyos·鸿蒙
程序员老刘6 小时前
一杯奶茶钱,PicGo + 阿里云 OSS 搭建永久稳定的个人图床
flutter·markdown
奋斗的小青年!!9 小时前
OpenHarmony Flutter 拖拽排序组件性能优化与跨平台适配指南
flutter·harmonyos·鸿蒙
小雨下雨的雨11 小时前
Flutter 框架跨平台鸿蒙开发 —— Stack 控件之三维层叠艺术
flutter·华为·harmonyos
行者9611 小时前
OpenHarmony平台Flutter手风琴菜单组件的跨平台适配实践
flutter·harmonyos·鸿蒙
小雨下雨的雨13 小时前
Flutter 框架跨平台鸿蒙开发 —— Flex 控件之响应式弹性布局
flutter·ui·华为·harmonyos·鸿蒙系统
cn_mengbei13 小时前
Flutter for OpenHarmony 实战:CheckboxListTile 复选框列表项详解
flutter
cn_mengbei13 小时前
Flutter for OpenHarmony 实战:Switch 开关按钮详解
flutter
奋斗的小青年!!13 小时前
OpenHarmony Flutter实战:打造高性能订单确认流程步骤条
flutter·harmonyos·鸿蒙
Coder_Boy_13 小时前
Flutter基础介绍-跨平台移动应用开发框架
spring boot·flutter