如何根据Flutter中的另一个变量定义一个变量?

guykilcj  于 2022-11-25  发布在  Flutter
关注(0)|答案(3)|浏览(151)

我正在构建一个带有ChangeNotifier提供程序的Flutter应用程序。当应用程序启动时,我调用Firebase API并将结果保存在Provider变量中:

Map<DateTime,List> datesMap;

如何根据第一个变量在同一个Provider中定义另一个变量?例如:

List newList = datesMap[DateTime.now()]

如果我尝试执行此操作,则会出现错误:
无法在初始设定式中存取执行严修成员'params'
如果我将第二个变量放在构造函数中,我将得到一个错误,因为在Firebase API完成之前,第一个变量datesMap为空。
示例代码:

class ShiftsProvider with ChangeNotifier {

Map<DateTime,List> datesMap;

List newList = datesMap[DateTime.now()];

Future<void> getDatesMapfromFirebase () {

some code...

datesMap = something;

notifyListeners();

return;
}
ltskdhd1

ltskdhd11#

您可以像这样使用late

Map<DateTime,List>? datesMap;

late List? newList = datesMap?[DateTime.now()];
juzqafwq

juzqafwq2#

可以使getter

List get newList {
   return datesMap[DateTime.now()];
 }
w46czmvw

w46czmvw3#

因为datesMap变量与特定类相关,所以可以用static关键字标记它,这样就可以解决问题:

class ShiftsProvider with ChangeNotifier {

static Map<DateTime,List> datesMap;

List? newList = datesMap[DateTime.now()];

Future<void> getDatesMapfromFirebase () {

some code...

datesMap = something;

notifyListeners();

return;
}
}

请注意,如果要使用静态变量,可以按如下方式访问它:

ShiftsProvider.datesMap

相关问题