flutter 未在抖动中显示SnackBar

brqmpdu1  于 2022-11-30  发布在  Flutter
关注(0)|答案(5)|浏览(141)

我试图在出现错误时使用如下所示的try ... catch语法在底部显示snackBar,但是由于某种原因,它没有显示出来。有人对此有解决方案吗?

Widget _confirmButton() {
    return SizedBox(
      height: 54,
      width: double.infinity,
      child: ElevatedButton(
        onPressed: () {
          try {
            _tryValidation();
            resetPassword(userEmail).then(
              (value) => Get.to(
                () => CompletePasswordReset(),
              ),
            );
          } catch (e) {
            const snackBar = SnackBar(
              content: Text('아이디 또는 비밀번호가 맞지 않습니다.'),
              backgroundColor: errorColor40,
              behavior: SnackBarBehavior.floating,
              margin: EdgeInsets.all(30),
              duration: Duration(seconds: 1),
            );
            ScaffoldMessenger.of(context).showSnackBar(snackBar);
          }
        },
        child: Text(
          '가입여부 확인',
          style: TextStyle(
            color: baseColor10,
            fontFamily: 'semi-bold',
            fontSize: titleMedium,
          ),
        ),
        style: ElevatedButton.styleFrom(
          backgroundColor: primaryColor50,
          elevation: 0,
          shadowColor: Colors.transparent,
          side: BorderSide(
            color: Colors.transparent,
          ),
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(15.0),
          ),
        ),
      ),
    );
  }
uttx8gqw

uttx8gqw1#

您需要在_tryValidationresetPassword方法/函数上抛出错误
现在,即使snackbar运行良好,实现也从未达到catch语句。
在这里可以看到,通过将try块语句中的语句替换为

throw 500;

小吃店经营得很好。

try {
 throw 500;
} catch (e) {
  const snackBar = SnackBar(
    content: Text('아이디 또는 비밀번호가 맞지 않습니다.'),
    backgroundColor: errorColor40,
    behavior: SnackBarBehavior.floating,
    margin: EdgeInsets.all(30),
    duration: Duration(seconds: 1),
  );
  ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
b1zrtrql

b1zrtrql2#

Get.snackbar('아이디 또는 비밀번호가 맞지 않습니다', '',
margin: EdgeInsets.all(15),
padding: EdgeInsets.all(0),
duration: Duration(milliseconds: 1000),
snackPosition: SnackPosition.BOTTOM,
 );
piv4azn7

piv4azn73#

尝试在_confirmButton()中添加上下文,如下所示_confirmButton(context)

3pmvbmvn

3pmvbmvn4#

这个小吃店需要上下文,你必须在方法中传递上下文,而不是使用this,你可以使用Get-X小吃店,你可以在任何地方使用它。-

Get.snackbar('아이디 또는 비밀번호가 맞지 않습니다', '',
    margin: EdgeInsets.all(15),
    padding: EdgeInsets.all(0),
    duration: Duration(milliseconds: 1000),
    snackPosition: SnackPosition.BOTTOM,
     );
6ju8rftf

6ju8rftf5#

Get.snackbar('아이디 또는 비밀번호가 맞지 않습니다', '',
margin: EdgeInsets.all(15),
padding: EdgeInsets.all(0),
duration: Duration(milliseconds: 1000),
snackPosition: SnackPosition.BOTTOM,
 );

相关问题