未处理的异常:FileSystemException:无法打开文件,路径 = 'assets/xml/strings.xml'(操作系统错误:没有这样的文件或目录,errno = 2)

Vla*_*eev 8 dart flutter

我开始研究 Flutter 并且一切正常,但它不读取 xml 文件这是 pubspec.yaml 部分:

flutter:
  uses-material-design: true
  assets:
    - assets/
    - assets/xml/strings.xml
Run Code Online (Sandbox Code Playgroud)

这是应该读取 xml 的部分:

  void main(){
    String file = "";
    switch (type){
      case TYPE_STRING:
        file = 'assets/xml/strings.xml';
        break;
    }
    readFileAsync(file);
  }

  void readFileAsync(String filePath) {
    File file = new File(filePath);
    Future<String> futureContent = file.readAsString();
    futureContent.then((xmlString) => {
      parseXml(xmlString)
    });
  }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Unhandled Exception: FileSystemException: Cannot open file, path = 'assets/xml/strings.xml' (OS Error: No such file or directory, errno = 2)
Run Code Online (Sandbox Code Playgroud)

这里我的资产是如何在项目结构中设置的: 在此处输入图片说明

所以,在我看来,我设置的一切都正确,有什么问题?

Cra*_*Cat 8

用于rootBundle从应用程序包访问资源。

并且还要求WidgetsFlutterBinding.ensureInitialized()第一,如果你想使用rootBundle之前runApp的功能。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  String file = "";
  switch (type) {
    case TYPE_STRING:
      file = 'assets/xml/strings.xml';
      break;
  }
  readFileAsync(file);
}

Future<dynamic> readFileAsync(String filePath) async {
  String xmlString =  await rootBundle.loadString(filePath);
  print(xmlString);
  return parseXml(xmlString);
}
Run Code Online (Sandbox Code Playgroud)