0

我创建了这样的布局,问题是 onPressed 侦听器不起作用,但我不明白为什么:

Material(
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(22.0)),
  color: const Color.fromRGBO(33, 63, 132, 1),
  clipBehavior: Clip.antiAlias,
  child: MaterialButton(
      height: 140.0,
      minWidth: 380.0,
      elevation: 20.0,
      color: const Color.fromRGBO(33, 63, 132, 1),
      textColor: Colors.white,
      child: Text("Chiudi sessione / Cambia utente",
          style: TextStyle(
            fontSize: ScreenUtil().setSp(20),
          )),
      onPressed: () {
        var future = endUserSession(badgeCode, false, context);
        future.then((value) {
          setUserBadgeForDualMode("");
          setDoorStatusIntoPrefs("");
          Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => const OpenDoorDualMode()));
        });
      }
      ),
)

我究竟做错了什么?

4

1 回答 1

1

问题似乎出在您的函数调用上,您不是在等待将来的值,请以这种方式使用

var future = await endUserSession(badgeCode, false, context);

或尝试删除它并像这样调用您的函数

   await endUserSession(badgeCode, false, context).then((value) async {
         await setUserBadgeForDualMode("");
         await setDoorStatusIntoPrefs("");
          Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => const OpenDoorDualMode()));
        });

在您期望未来值的任何地方使用“等待”。

于 2022-01-25T16:11:14.513 回答