所以我有一个列表,我在一个屏幕上添加数据(每次点击某个按钮时)。然后我有一个底部导航栏,它允许我在屏幕之间切换(因此也没有弹出或推送路线)。
我的问题是我有两个屏幕。我想从第二个状态类中的第一个状态类访问列表。
带列表的类:
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,如果我要在底部导航按钮之间切换,列表将丢失其中的项目。我也将如何避免这种情况?我可以在主类中制作一个全局列表吗?
谢谢。
当然,这是可能的。您可以使用应用状态提供程序来使用全局列表,并且您可以从该提供程序设置和获取列表。有一个非常有用的博客在这里。
您的提供商将如下所示:
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)
归档时间: |
|
查看次数: |
1162 次 |
最近记录: |