You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中assets文件读取失败:修改pubspec.yaml仍报错

解决Flutter读取Assets文件报错" No such file or directory"的问题

你用File类直接读取assets文件的方式不对——Flutter的assets文件是打包进应用资源包的,并非存储在设备的文件系统路径中,所以File无法定位到该路径。

正确的解决方案:使用rootBundle读取Assets

步骤如下:

  1. 导入flutter/services.dart包
  2. 通过rootBundle.loadString()读取assets文件内容,再分割为行
  3. 后续随机选单词的逻辑保持不变

修正后的完整代码:

import 'package:flutter/services.dart'; // 必须导入这个包
import 'dart:math';

// 建议放在异步方法中执行
Future<List<String>> getRandomWords() async {
  List<String> wordList = [];
  try {
    // 用rootBundle读取assets内容
    String fileContent = await rootBundle.loadString('assets/this.txt');
    List<String> lines = fileContent.split('\n');
    // 过滤空行,避免索引错误
    lines = lines.where((line) => line.trim().isNotEmpty).toList();
    
    final random = Random();
    for (int i = 0; i < 4; i++) {
      if(lines.isEmpty) break; // 防止文件为空时报错
      int randomIndex = random.nextInt(lines.length);
      wordList.add(lines[randomIndex]);
    }
  } catch (e) {
    print('Error reading file: $e');
  }
  return wordList;
}

额外检查项

  • 确认pubspec.yaml中assets的缩进正确(必须是flutter:下的二级缩进,和uses-material-design同级)
  • 修改pubspec.yaml后,执行一次flutter pub get确保资源被正确打包
  • 确认assets/this.txt文件确实存在于项目根目录的assets文件夹中,文件名和路径大小写一致(Flutter对路径大小写敏感)

内容的提问来源于stack exchange,提问作者MMMM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:13:15