centos里flutter资源如何加载
导读:在 CentOS 上的 Flutter 资源加载实践 一 静态资源 Asset 的声明与加载 将图片、字体、JSON 等放入项目根目录下的 assets(或自定义目录,如 images/、data/)。 在 pubspec.yaml 中声...
在 CentOS 上的 Flutter 资源加载实践
一 静态资源 Asset 的声明与加载
- 将图片、字体、JSON 等放入项目根目录下的 assets(或自定义目录,如 images/、data/)。
- 在 pubspec.yaml 中声明资源,支持目录级声明简化维护;如使用 uses-material-design: true,可配合 flutter: 默认图标集。
- 在代码中通过 AssetBundle 或 Image.asset 等加载,运行前执行 flutter pub get 使资源生效。
示例目录结构
assets/
images/logo.png
data/config.json
fonts/Roboto-Regular.ttf
示例 pubspec.yaml
flutter:
uses-material-design: true
assets:
- assets/images/
- assets/data/
- assets/fonts/
示例加载代码
import 'package:flutter/services.dart' show rootBundle;
import 'dart:convert';
import 'package:flutter/material.dart';
// 读取文本/JSON 资源
Future<
String>
loadAsset(String path) async {
return await rootBundle.loadString(path);
}
// 读取字节数据(如图片原始字节)
Future<
ByteData>
loadBytes(String path) async {
return await rootBundle.load(path);
}
// 在 Widget 中使用图片
Image.asset('assets/images/logo.png')
要点
- 资源路径需与 pubspec.yaml 中的声明一致(区分大小写)。
- 目录声明会包含其下所有文件与子目录;新增或重命名资源后需重新运行或热重载以生效。
二 运行时文件 File 的加载与保存 Linux 桌面端
- 对于用户文档、缓存、下载等运行时文件,使用 path_provider 获取跨平台目录,再用 dart:io File 读写。
- 常用目录:getApplicationDocumentsDirectory(持久文档)、getTemporaryDirectory(缓存,可能被系统清理)、getApplicationSupportDirectory(应用支持文件)、getDownloadsDirectory(仅 Linux/MacOS/Windows 有效)。
示例
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
Future<
void>
saveText(String text, String filename) async {
final dir = await getApplicationDocumentsDirectory();
// Linux: ~/.local/share/...
final file = File('${
dir.path}
/$filename');
await file.writeAsString(text);
}
Future<
String>
readText(String filename) async {
final dir = await getApplicationDocumentsDirectory();
final file = File('${
dir.path}
/$filename');
return await file.readAsString();
}
要点
- path_provider 在 Linux 桌面端可用,适合保存下载、导出、缓存等运行时数据。
- 与 Asset 不同,运行时文件需考虑权限、磁盘空间与用户可见性。
三 服务器端或 Linux 服务场景的文件访问
- 若你的 Flutter 程序运行在 CentOS 服务器(例如无头/后台服务、生成图片或 PDF 并保存),可直接使用 dart:io 访问服务器文件系统路径(如 /var/www、/tmp 等),无需 path_provider。
- 示例:读取配置、写入日志或导出报告到指定目录,注意运行用户(如 flutter 或 nginx)的读写权限与目录存在性检查。
示例
import 'dart:io';
Future<
void>
writeReport(String content, String outPath) async {
final file = File(outPath);
await file.writeAsString(content, mode: FileMode.write);
}
四 常见问题与排查
- 资源未显示或报 404:确认 pubspec.yaml 已声明、路径大小写一致,执行 flutter pub get 并重新运行;必要时执行 flutter clean 后再获取依赖。
- 字体不生效:在 pubspec.yaml 的 fonts: 下声明字体族与字重,使用 FontFamily(…).fontFamily 引用。
- Linux 文件读写失败:检查目录是否存在、运行用户是否具备读写权限;区分缓存与持久目录的用途,避免将需持久化的数据放入临时目录。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos里flutter资源如何加载
本文地址: https://pptw.com/jishu/747942.html
