如何在 Flutter 中将列表从一个类传递到另一个类?

mkl*_*ao2 3 dart flutter

所以我有一个列表,我在一个屏幕上添加数据(每次点击某个按钮时)。然后我有一个底部导航栏,它允许我在屏幕之间切换(因此也没有弹出或推送路线)。

我的问题是我有两个屏幕。我想从第二个状态类中的第一个状态类访问列表。

带列表的类:

class Security extends StatefulWidget {
  @override
  _SecurityState createState() => _SecurityState();
}

class _SecurityState extends State<Security> {

  List<Log> my_logs = []; // i want data stored inside here

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}
Run Code Online (Sandbox Code Playgroud)

我想从上一个类访问列表的类:

class History extends StatefulWidget {
  @override
  _HistoryState createState() => _HistoryState();
}

class _HistoryState extends State<History> {

  List<Log> items = [] // i want it here
  
  @override
  Widget build(BuildContext context) {
    return Scaffold();

  }
}
Run Code Online (Sandbox Code Playgroud)

那可能吗?

还有 atm,如果我要在底部导航按钮之间切换,列表将丢失其中的项目。我也将如何避免这种情况?我可以在主类中制作一个全局列表吗?

谢谢。

Aki*_*kif 8

当然,这是可能的。您可以使用应用状态提供程序来使用全局列表,并且您可以从该提供程序设置和获取列表。有一个非常有用的博客在这里

您的提供商将如下所示:


import 'package:flutter/material.dart';

class LogProvider extends ChangeNotifier{
  List<Log> _logList =
      List<Log>();

  List<Log> get logList =>
      this._logList;

  set logList(List<Log> value) {
    _logList = value;
    notifyListeners();
  }


}

Run Code Online (Sandbox Code Playgroud)