与提供程序一起使用path_provider软件包

时间:2020-07-05 06:45:47

标签: flutter flutter-packages

我只是想知道是否存在使用path_provider包从文件中读取数据并将此数据传递给Provider类并实例化一个类的正确方法,该类包含一个由我们从该类读取的数据定义的类变量上面的文件。

类似的东西:
main.dart内部:

.  
.  

Future<String>  FetchData() async {
  final directory = await getApplicationDocumentsDirectory();
  String path =  directory.path;
  final file = File('$path/data.txt');

  Future<String> data = file.readAsString();
  return data;
}
.  
.  
.  
// INSIDE MyApp(): 
class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {


    return ChangeNotifierProvider<MyAppData>(
      create: (context) => MyAppData(FetchData()),  //<-
      //etc...
.  
.  

现在在MyAppData类中:

class MyAppData extends ChangeNotifier {
  Future<String> data;
  
  MyAppData(this.data);

//etc...

这种方法的问题是我试图从文件中获取一些列表(其数据将随着用户使用我的应用程序而改变),然后MyAppData类中的所有内容(所有成员变量)都必须的类型为Future,我不确定应用程序的UI(最初还取决于这些列表的长度)是否不会崩溃。

我的问题基本上是:

  1. 当我们尝试通过以下方式定义 path_providerProvider软件包的正确方法是:我们从本地文件读取的数据?

  2. 如果这不是正确的方法,请提出在本地读取和使用数据的正确方法。

P.S:我对Flutter很陌生。正在使用Provider构建我的第一个应用程序,方法是定义一个带有一些示例列表的类,这些变量我已经定义了,直到后来我意识到我也需要在本地读取数据。但是现在进行太多更改对我来说有点冒险,因为我已经完成了90%的代码。 :D

0 个答案:

没有答案