Flutter 方法';getExternalStorageDirectory';isn';t为类型';CSV控制器';

Flutter 方法';getExternalStorageDirectory';isn';t为类型';CSV控制器';,flutter,dart,Flutter,Dart,我正在尝试创建一个CSV控制器,但出现语法错误没有为类型“CsvController”定义方法“getExternalStorageDirectory” 以下是我遇到的问题: static Future<String> _getFilePath(String fileName) async { Io.Directory appDocumentsDirectory = await getExternalStorageDirectory(); // 1 String

我正在尝试创建一个
CSV控制器
,但出现语法错误
没有为类型“CsvController”定义方法“getExternalStorageDirectory”

以下是我遇到的问题:

  static Future<String> _getFilePath(String fileName) async {
    Io.Directory appDocumentsDirectory = await getExternalStorageDirectory(); // 1
    String appDocumentsPath = appDocumentsDirectory.path; // 2
    String filePath = '$appDocumentsPath/$fileName.csv'; // 3
    return filePath;
  }
以下是我的完整代码:

import 'package:csv/csv.dart';
import 'dart:io' as Io;
import 'package:ext_storage/ext_storage.dart';

class CsvController {

  static Future<Io.File> getCsvFromList(List<List<dynamic>> csvDataList) async {
    try {
      String csvDataString = const ListToCsvConverter().convert(csvDataList);
      Io.File csvFile = await _saveFile(csvDataString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<Io.File> getCsvFromString(String csvString) async {
    try {
      Io.File csvFile = await _saveFile(csvString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<String> _getFilePath(String fileName) async {
    Io.Directory appDocumentsDirectory = await getExternalStorageDirectory(); // 1
    String appDocumentsPath = appDocumentsDirectory.path; // 2
    String filePath = '$appDocumentsPath/$fileName.csv'; // 3
    return filePath;
  }

  static Future<Io.File> _saveFile(String fileDataString, {index = 0}) async {
    try {
      Io.File file = Io.File(await _getFilePath(
          "${General.getDate().millisecondsSinceEpoch}" +
              (index > 0 ? "($index)" : "")));
      if (!file.existsSync()) {
        // 1
        file.writeAsStringSync(fileDataString); // 2
        return file;
      } else {
        return _saveFile(fileDataString, index: index + 1);
      }
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}
import 'package:csv/csv.dart';
import 'dart:io' as Io;
import 'package:path_provider/path_provider.dart';

class CsvController {

  static Future<Io.File> getCsvFromList(List<List<dynamic>> csvDataList) async {
    try {
      String csvDataString = const ListToCsvConverter().convert(csvDataList);
      Io.File csvFile = await _saveFile(csvDataString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<Io.File> getCsvFromString(String csvString) async {
    try {
      Io.File csvFile = await _saveFile(csvString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<String> _getFilePath(String fileName) async {
    Io.Directory appDocumentsDirectory = await getExternalStorageDirectory(); // 1
    String appDocumentsPath = appDocumentsDirectory.path; // 2
    String filePath = '$appDocumentsPath/$fileName.csv'; // 3
    return filePath;
  }

  static Future<Io.File> _saveFile(String fileDataString, {index = 0}) async {
    try {
      Io.File file = Io.File(await _getFilePath(
          "${General.getDate().millisecondsSinceEpoch}" +
              (index > 0 ? "($index)" : "")));
      if (!file.existsSync()) {
        // 1
        file.writeAsStringSync(fileDataString); // 2
        return file;
      } else {
        return _saveFile(fileDataString, index: index + 1);
      }
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}
导入“包:csv/csv.dart”;
导入“dart:io”作为io;
导入“package:ext_storage/ext_storage.dart”;
类CSV控制器{
静态未来getCsvFromList(List csvDataList)异步{
试一试{
字符串csvDataString=const ListTocsConverter().convert(csvDataList);
Io.File csvFile=wait_saveFile(csvDataString);
返回csvFile;
}捕获(e){
打印(如toString());
返回null;
}
}
静态未来getCsvFromString(String csvString)异步{
试一试{
Io.File csvFile=await\u saveFile(csvString);
返回csvFile;
}捕获(e){
打印(如toString());
返回null;
}
}
静态未来\u getFilePath(字符串文件名)异步{
Io.Directory appDocumentsDirectory=await getExternalStorageDirectory();//1
字符串appDocumentsPath=appDocumentsDirectory.path;//2
字符串filePath='$appDocumentsPath/$fileName.csv';//3
返回文件路径;
}
静态未来_saveFile(字符串fileDataString,{index=0})异步{
试一试{
Io.File File=Io.File(等待_getFilePath(
“${General.getDate().millissecondssinceepoch}”+
(索引>0?”($index)”:“”);
如果(!file.existsSync()){
// 1
file.writeastringsync(fileDataString);//2
返回文件;
}否则{
返回_saveFile(fileDataString,索引:index+1);
}
}捕获(e){
打印(如toString());
返回null;
}
}
}
#编辑


在解决它之后,我仍然有一个通用关键字的问题。

我已经解决了这个问题,因为我没有定义
路径提供程序
包:

这是我的全部代码:

import 'package:csv/csv.dart';
import 'dart:io' as Io;
import 'package:ext_storage/ext_storage.dart';

class CsvController {

  static Future<Io.File> getCsvFromList(List<List<dynamic>> csvDataList) async {
    try {
      String csvDataString = const ListToCsvConverter().convert(csvDataList);
      Io.File csvFile = await _saveFile(csvDataString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<Io.File> getCsvFromString(String csvString) async {
    try {
      Io.File csvFile = await _saveFile(csvString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<String> _getFilePath(String fileName) async {
    Io.Directory appDocumentsDirectory = await getExternalStorageDirectory(); // 1
    String appDocumentsPath = appDocumentsDirectory.path; // 2
    String filePath = '$appDocumentsPath/$fileName.csv'; // 3
    return filePath;
  }

  static Future<Io.File> _saveFile(String fileDataString, {index = 0}) async {
    try {
      Io.File file = Io.File(await _getFilePath(
          "${General.getDate().millisecondsSinceEpoch}" +
              (index > 0 ? "($index)" : "")));
      if (!file.existsSync()) {
        // 1
        file.writeAsStringSync(fileDataString); // 2
        return file;
      } else {
        return _saveFile(fileDataString, index: index + 1);
      }
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}
import 'package:csv/csv.dart';
import 'dart:io' as Io;
import 'package:path_provider/path_provider.dart';

class CsvController {

  static Future<Io.File> getCsvFromList(List<List<dynamic>> csvDataList) async {
    try {
      String csvDataString = const ListToCsvConverter().convert(csvDataList);
      Io.File csvFile = await _saveFile(csvDataString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<Io.File> getCsvFromString(String csvString) async {
    try {
      Io.File csvFile = await _saveFile(csvString);
      return csvFile;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

  static Future<String> _getFilePath(String fileName) async {
    Io.Directory appDocumentsDirectory = await getExternalStorageDirectory(); // 1
    String appDocumentsPath = appDocumentsDirectory.path; // 2
    String filePath = '$appDocumentsPath/$fileName.csv'; // 3
    return filePath;
  }

  static Future<Io.File> _saveFile(String fileDataString, {index = 0}) async {
    try {
      Io.File file = Io.File(await _getFilePath(
          "${General.getDate().millisecondsSinceEpoch}" +
              (index > 0 ? "($index)" : "")));
      if (!file.existsSync()) {
        // 1
        file.writeAsStringSync(fileDataString); // 2
        return file;
      } else {
        return _saveFile(fileDataString, index: index + 1);
      }
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}
导入“包:csv/csv.dart”;
导入“dart:io”作为io;
导入“package:path_provider/path_provider.dart”;
类CSV控制器{
静态未来getCsvFromList(List csvDataList)异步{
试一试{
字符串csvDataString=const ListTocsConverter().convert(csvDataList);
Io.File csvFile=wait_saveFile(csvDataString);
返回csvFile;
}捕获(e){
打印(如toString());
返回null;
}
}
静态未来getCsvFromString(String csvString)异步{
试一试{
Io.File csvFile=await\u saveFile(csvString);
返回csvFile;
}捕获(e){
打印(如toString());
返回null;
}
}
静态未来\u getFilePath(字符串文件名)异步{
Io.Directory appDocumentsDirectory=await getExternalStorageDirectory();//1
字符串appDocumentsPath=appDocumentsDirectory.path;//2
字符串filePath='$appDocumentsPath/$fileName.csv';//3
返回文件路径;
}
静态未来_saveFile(字符串fileDataString,{index=0})异步{
试一试{
Io.File File=Io.File(等待_getFilePath(
“${General.getDate().millissecondssinceepoch}”+
(索引>0?”($index)”:“”);
如果(!file.existsSync()){
// 1
file.writeastringsync(fileDataString);//2
返回文件;
}否则{
返回_saveFile(fileDataString,索引:index+1);
}
}捕获(e){
打印(如toString());
返回null;
}
}
}