Flutter 创建一个包含 setState 的方法
Flutter Create a method including setState
我正在尝试创建自定义小吃店。它包括在 snackbar 关闭后执行的“setState”。但是 setStat 函数不起作用(即 snackBarIsOn = false;)。快餐栏弹出并在 2 秒后消失。它还应该将“snackBarIsOn”更改为“true”,但它并没有发生。我在没有方法的情况下在主代码中测试了它。它按预期工作。我怀疑“actionAfterClosed”的类型。
请帮助我。
customSnackBar(
context: context,
content: 'Enter a Title.',
label: 'Close',
textColor: Colors.white,
snackBarAction: () {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
setState(() {
snackBarIsOn = false;
});
},
actionAfterClosed:
setState(() {
snackBarIsOn = false;
})
);
void customSnackBar(
{required BuildContext context,
required String content,
required String label,
required Color textColor,
required VoidCallback snackBarAction,
required **VoidCallback** actionAfterClosed}) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(
content: Text(content),
duration: const Duration(seconds: 2),
action: SnackBarAction(
label: label,
textColor: textColor,
onPressed: snackBarAction,
),
))
.closed
.then((_) =>
actionAfterClosed
);
}
我认为这是问题所在:
actionAfterClosed:
setState(() {
snackBarIsOn = false;
})
在这里,你告诉 flutter 到 运行 setState
,然后使用它 return 作为回调,所以它期望 setState
到 return 一个在 snackbar 关闭后调用的函数,而不是调用 setState
本身。
要解决此问题,您必须像 snackbarAction
:
那样使用函数文字
actionAfterClosed:
() => setState(() {
snackBarIsOn = false;
})
我能找到的第二个问题在这里:
.closed
.then((_) =>
actionAfterClosed
);
你忘了括号!这样函数就不是 运行ning!
.closed
.then((_) =>
actionAfterClosed()
);
我正在尝试创建自定义小吃店。它包括在 snackbar 关闭后执行的“setState”。但是 setStat 函数不起作用(即 snackBarIsOn = false;)。快餐栏弹出并在 2 秒后消失。它还应该将“snackBarIsOn”更改为“true”,但它并没有发生。我在没有方法的情况下在主代码中测试了它。它按预期工作。我怀疑“actionAfterClosed”的类型。
请帮助我。
customSnackBar(
context: context,
content: 'Enter a Title.',
label: 'Close',
textColor: Colors.white,
snackBarAction: () {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
setState(() {
snackBarIsOn = false;
});
},
actionAfterClosed:
setState(() {
snackBarIsOn = false;
})
);
void customSnackBar(
{required BuildContext context,
required String content,
required String label,
required Color textColor,
required VoidCallback snackBarAction,
required **VoidCallback** actionAfterClosed}) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(
content: Text(content),
duration: const Duration(seconds: 2),
action: SnackBarAction(
label: label,
textColor: textColor,
onPressed: snackBarAction,
),
))
.closed
.then((_) =>
actionAfterClosed
);
}
我认为这是问题所在:
actionAfterClosed:
setState(() {
snackBarIsOn = false;
})
在这里,你告诉 flutter 到 运行 setState
,然后使用它 return 作为回调,所以它期望 setState
到 return 一个在 snackbar 关闭后调用的函数,而不是调用 setState
本身。
要解决此问题,您必须像 snackbarAction
:
actionAfterClosed:
() => setState(() {
snackBarIsOn = false;
})
我能找到的第二个问题在这里:
.closed
.then((_) =>
actionAfterClosed
);
你忘了括号!这样函数就不是 运行ning!
.closed
.then((_) =>
actionAfterClosed()
);