Debian 上 Flutter 资源的加载方式
一 基本步骤与项目配置
flutter:
uses-material-design: true
assets:
- assets/
- images/icon.png
上述写法会把 assets/ 目录下的直接子文件以及 images/icon.png 一并打包。若需包含子目录,需显式添加(如:assets/icons/)。二 常见资源类型的加载方法
Image.asset('images/icon.png', width: 48, height: 48)
// 或
Image(image: AssetImage('images/icon.png'))
import 'package:flutter/services.dart' show rootBundle;
final jsonStr = await rootBundle.loadString('assets/config.json');
final bytes = await rootBundle.load('assets/data.bin');
Image.asset('icons/heart.png', package: 'my_icons')
// 或在 pubspec.yaml 中声明:
// flutter: assets: [packages/fancy_backgrounds/backgrounds/bg1.png]
三 打包与 Debian 注意事项
四 实用示例
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
class AssetDemo extends StatelessWidget {
Future<String> loadText() => rootBundle.loadString('assets/hello.txt');
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Asset Demo')),
body: Column(
children: [
Image.asset('images/icon.png', width: 100, height: 100),
FutureBuilder<String>(
future: loadText(),
builder: (context, snap) {
if (snap.hasData) return Text(snap.data!);
return CircularProgressIndicator();
},
),
],
),
);
}
}
要点:确保 assets/hello.txt 与 images/icon.png 已在 pubspec.yaml 中声明,否则会报找不到资源的错误。