在 CentOS 上的 Flutter 资源加载实践
一 静态资源 Asset 的声明与加载
示例目录结构
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')
要点
二 运行时文件 File 的加载与保存 Linux 桌面端
示例
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();
}
要点
三 服务器端或 Linux 服务场景的文件访问
示例
import 'dart:io';
Future<void> writeReport(String content, String outPath) async {
final file = File(outPath);
await file.writeAsString(content, mode: FileMode.write);
}
四 常见问题与排查