首页 > 解决方案 > 将一个值(年龄)从一个小部件传递给另一个

问题描述

通过文本字段输入,使用以下代码获取用户年龄(为简单起见,已截断):

onChanged: (valueYear) {
                          if (valueYear.length == 4)
                            FocusScope.of(context).unfocus();
                          valueYearKey = valueYear;
                          valueBirthKey = valueDayKey +
                              '-' +
                              valueMonthKey +
                              '-' +
                              valueYearKey;
                          print(valueBirthKey);
                          DateTime _dateTime = DateTime(
                            int.parse(valueBirthKey.substring(6)),
                            int.parse(valueBirthKey.substring(3, 5)),
                            int.parse(valueBirthKey.substring(0, 2)),
                          );
                          age = DateTime.fromMillisecondsSinceEpoch(
                                      DateTime.now()
                                          .difference(_dateTime)
                                          .inMilliseconds)
                                  .year -
                              1970;
                          print(age);
                          return age = UserAge.age;
                        })),
              ),
            ],
          ),
        ],
      ),
    );
  }
}

在终端中,成功打印了年龄。然后我组建了一个类,希望将打印的值存储在这个类中:

class UserAge with ChangeNotifier {
  static int age;
  notifyListeners();
}

下面是用户按下按钮,如果年龄> 18,弹出对话框确认并继续,如果年龄< 18,未成年,弹出另一个对话框。

 onPressed: () async {
                      if (UserAge.age > 18) {
                        await confirmAgeDialog(context);
                      } else {
                        skipAgeDialog(context);
                      }

页面上没有看到红色错误,但是当我点击按钮时,弹出错误我的 UserAge.age 为空。

这使我得出结论,从初始打印值收到的年龄没有成功存储到班级。我一直在尝试修复它,但无济于事。我是新手,如果答案正盯着我看,我深表歉意。非常感谢任何指导谢谢!

标签: flutterclassdatetimevariables

解决方案


而不是age = UserAge.age使用UserAge.age =age


推荐阅读