从全局静态函数访问数据

accessing data from a static function globally

在我的闪屏页面的init()中,我正在调用下一页的函数以便从后端加载数据,同时闪屏将运行。

这里的问题是它只调用静态函数,并且该函数将数据存储在本地。 在我的另一个页面上,我想要全局数据,以便我可以在该特定页面上的任何位置访问该数据。

我的代码的亮点是:

启动画面页面初始化代码:

 void initState() {
    super.initState();
    FeedScreen.getdata();
}

我的下一页,即 FeedScreen 页面,我想要全局数据的地方是:

class FeedScreen extends StatefulWidget {

  @override
  _FeedScreenState createState() => _FeedScreenState();



  static  void getdata() async{
    CollectionReference collectionReference = FirebaseFirestore.instance
        .collection('Feed');
    var snapshot = await collectionReference.get();
    snapshot.docs.forEach((result){
      collectionReference.doc(result.id).collection('myfeed').snapshots().listen((event) {

        var latarr,longarr,titlearr,descarr,urlarr;

        for(int i=0;i<event.docs.length;i++){
          urlarr.add(event.docs[i].data()['imageurl']);
        
          latarr.add(event.docs[i].data()['lat']);
         
          longarr.add(event.docs[i].data()['long']);
     
          titlearr.add(event.docs[i].data()['title']);
         
          descarr.add(event.docs[i].data()['description']);

        }
      });
    });
  }

我想在 getdata() 函数之外访问 latarr、longarr、titlearr、descarr、urlarr 的值。

在任何 class 之外声明变量 latarr,longarr,titlearr,descarr,urlarr。例如,在 void main() 函数之前的 main.dart 文件中。这些变量将被视为 global variables,并且可以在您的应用中的任何位置访问。

执行此操作的最佳且简洁的方法是使用状态管理。有了它,您将能够顺利地管理代码中的变量等,并且您可以在需要时在程序中的任何位置访问这些变量。一些受欢迎的是 Provider , Bloc and GetX.

通过使用状态管理,您可以轻松地在项目的任何位置操作和访问数据。