dart Flutter-操作系统错误:没有这样的文件或目录,errno = 2

ocebsuys  于 2023-07-31  发布在  Flutter
关注(0)|答案(2)|浏览(127)

在我的Flutter应用程序中,我有一些数据要使用。最初,我创建了一个变量并将这些数据存储在其中,但它变得太大并阻碍了代码的可读性。然后,我考虑创建一个.json文件,并将此JSON数据放入文件中的一个变量中,以便访问此数据。然而,我尝试了几种方法,在所有这些方法中,我都遇到了这个错误:“OS错误:没有这样的文件或目录,errno = 2”,说明找不到文件。
这是我的代码:

Future<String> get _localPath async {
    final directory = await getApplicationDocumentsDirectory();

    return directory.path;
  }

  Future<File> get _localFile async {
    final path = await _localPath;
    return File('$path/lib/layers/equipment_care.json');
  }

  Future<String> readCounter() async {
    try {
      final file = await _localFile;

      // Read the file
      final contents = await file.readAsString();

      return contents.toString();
    } catch (e) {
      // If encountering an error, return 0
      return "";
    }
  }

  @override
  Widget build(BuildContext context) {
    readCounter().then((value) {
      print(value);
    });
    return Container(
      child: Scaffold(
        appBar: _appBar(),
        body: _body(),
      ),
    );
  }

字符串
在下图中,可以看到json文件路径(equipment_care. json),dart文件的路径(know_more_equipment_screen.dart)和flutter项目的文件。directory的路径。path返回以下内容:

/data/user/0/(censored)/app_flutter


文件的路径('$path/lib/layers/equipment_care. json')为

/data/user/0/(censored)/app_flutter/lib/layers/equipment_care.json


x1c 0d1x的数据
它要找的是最后一个链接,它没有返回任何东西。我真的很想知道为什么它找不到文件,我可能做错了什么,这样我就可以修复它。有人能帮帮忙吗?
注意:地址中的“censored”是因为我不能显示路径的特定部分,但在所有情况下都是一样的。

enxuqcxy

enxuqcxy1#

我需要在pubspeck.yaml中的资产中添加json文件路径:

assets:
   - lib/layers/equipment_care.json

字符串
为了获取JSON数据,我这样做了:

Map dataEquipment = {};

    void initState(){
        readCounter().then((value) {
          dataEquipment = json.decode(value);
        });
        super.initState();
      }
    
      Future<String> readCounter() async {
        try {
          String jsonString = await rootBundle.loadString('lib/layers/equipment_care.json');
          return jsonString;
    
        } catch (e) {
          return "";
        }
      }


在做了这个改动之后,我就能够从json文件中获取数据了

pbgvytdp

pbgvytdp2#

尝试添加path_provider包:

dependencies:
  path_provider: ^2.0.15

字符串
如果你解决了这个问题,请告诉我

相关问题