centos

centos里flutter资源如何加载

小樊
35
2025-11-14 01:13:44
栏目: 智能运维

在 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);
}

四 常见问题与排查

0
看了该问题的人还看了