如何在Dart中修复未定义的File()类及其方法?

时间:2019-04-14 20:50:48

标签: dart

我想将文件保存在Android / iOS的本地存储中。我遵循Flutter食谱来保存文件,但是没有用。到处都有使用File类的示例,但是当我使用它时它是不确定的。我正在使用Dart 2.2.0和Flutter 1.2.1

我已经尝试了一些网站的示例代码片段。没事。我的Dart文件中未定义文件类readAsStringwriteAsString

这是代码。在DartPad中对其进行了检查。我在哪里错了?

//packages
import 'dart:io';
import 'dart:async';
import 'package:path_provider/path_provider.dart';

//start
class File {
  /// Directory Path
  /// Local Directory Path
  Future<String> get _localPath async {
    final directory = await getApplicationDocumentsDirectory();
    // For your reference print the AppDoc directory
    print(directory.path);
    return directory.path;
  }
  /// Reference for file Location
  Future<File> get _localFile async {
    final path = await _localPath;
    final address = '$path/data.txt';
    return File(address);
  }
  /// Presenting different Data as 1 String
  String convertingtoString(String title, String author, String content) {
    return '$title\n$author\n\n$content';
  }
  /// Write to file
  /// Writing as String
  Future<File> writeContent(String matter) async {
    /// Get matter converted to string as matter
    final file = await _localFile;
    // Write the file
    return file.writeAsString(matter);
  }
  /// Read from file
  Future<String> readcontent() async {
    try {
      final file = await _localFile;
      // Read the file
      String contents = await file.readAsString();
      return contents;
    } catch (e) {
      // If there is an error reading, return a default String
      return 'Error, Couldn\'t read file';
    }
  }
}

这是我的Android flutter项目中的代码。我在VScode中遇到类似DartPad的错误

1 个答案:

答案 0 :(得分:0)

您已经创建了自己的名为File的类,因此对File隐藏了dart:io类。为您的自定义类命名其他名称,或执行以下操作:

import 'dart:io' as io;

并在打算使用io.File的{​​{1}}类的地方使用dart:io。 (我建议重命名您的自定义类以避免混淆。)


原始答案

由于您拥有File,因此import 'dart:io';类应该可供您使用。

如果您仅使用DartPad尝试此操作,那么它(除其他功能外)将无法在此处使用,因为dart:io is meant to be used with a Dart VMFile在具有沙盒环境且通常会阻止文件系统访问的浏览器中无法使用:

  

重要:基于浏览器的应用程序无法使用此库。只有服务器,命令行脚本和Flutter移动应用程序才能导入和使用dart:io。