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

Flutter应用中assets资源跨设备访问异常的解决方法咨询

Flutter Assets读取问题解决方案

你遇到的问题根源在于:Flutter的assets在移动端是打包进应用安装包的,并非文件系统中的独立文件,因此直接用File("assets/data.txt")这种方式在移动端无法访问到文件。PC端能生效是因为开发环境下assets目录存在于本地文件系统中,刚好能被File路径匹配到。

正确的读取方式是使用Flutter提供的rootBundle工具,步骤如下:

  1. 导入依赖包
    在需要读取assets的文件顶部导入flutter/services.dart:

    import 'package:flutter/services.dart';
    
  2. 读取文本类assets
    用rootBundle.loadString()方法读取txt文件内容,示例代码:

    Future<String> loadStates() async {
      try {
        return await rootBundle.loadString('assets/states.txt');
      } catch (e) {
        // 处理读取失败的情况,比如返回空字符串或错误提示
        return '';
      }
    }
    
  3. 读取二进制类assets(如图片)
    如果是读取图片这类二进制文件,使用rootBundle.load()获取ByteData,再转换为Uint8List:

    import 'dart:typed_data';
    
    Future<Uint8List> loadLogo() async {
      try {
        final ByteData data = await rootBundle.load('assets/logo.png');
        return data.buffer.asUint8List();
      } catch (e) {
        return Uint8List(0);
      }
    }
    

注意:确保你在pubspec.yaml中已经正确声明了要使用的assets(你的配置是正确的),并且执行过flutter pub get,避免缓存问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:31:35