flutter - 将一个值(年龄)从一个小部件传递给另一个
问题描述
通过文本字段输入,使用以下代码获取用户年龄(为简单起见,已截断):
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 为空。
这使我得出结论,从初始打印值收到的年龄没有成功存储到班级。我一直在尝试修复它,但无济于事。我是新手,如果答案正盯着我看,我深表歉意。非常感谢任何指导谢谢!
解决方案
而不是age = UserAge.age
使用UserAge.age =age
推荐阅读
- sql-server - SQL Server SET XACT_ABORT ON vs TRY...CATCH 存储过程中的块
- javascript - 如何访问我的 Google Play 开发者帐户中的存储桶?
- asp.net-core - asp.net Core 2 Razor Pages问题在条件内加载部分
- html - 将 aria-label 添加到文本元素
- c# - 为什么我的文件流没有正确写入
- docker - 如何在多容器 pod 中通过 helm-chart 部署期间覆盖值?
- swift - Codable 如何验证它扩展的类型?
- python - 您如何解决:pygame 中的“UnboundLocalError:分配前引用的局部变量‘事件’”?
- python - 对于我的情况,如何将行转换为列?
- shell - 奇怪的 txt 行为