表单验证未命中函数调用

问题描述 投票:0回答:1

我不确定为什么我的异步函数在我的表单有效后没有触发。我正在打印刷声明。关于为什么的任何线索?

Align(
  alignment: Alignment.center,
  child: GestureDetector(
    onTap: (() {
      if (_formKey.currentState!.validate()) {
        print('Form is Valid');
        () async {
          setState(() {
            isLoading = true;
          });
          await signIn();
          setState(() {
            isLoading = false;
          });
        };
        return;
      }
    }),
    child: !isLoading
        ? Container(
            decoration: BoxDecoration(
                color: Colors.blue[500],
                borderRadius: BorderRadius.circular(12)),
            child: const Padding(
              padding: EdgeInsets.symmetric(
                  horizontal: 65.0, vertical: 15),
              child: Text(
                'Sign in',
                style: TextStyle(
                    fontSize: 18,
                    color: Colors.white,
                    fontWeight: FontWeight.bold),
              ),
            ),
          )
        : const CircularProgressIndicator(),
  ),
),

我试过弄乱我的表单验证器,我希望能够很好地击中

setState()
集团,但我没有,它似乎就在之前停止了。

flutter dart asynchronous
1个回答
0
投票

您正在创建语法为的内联函数

(){
 /// yourTask
}()  

您缺少调用函数。而且不需要嵌套代码,你可以这样做

Align(
  alignment: Alignment.center,
  child: GestureDetector(
    onTap: () async {
      final bool isValided = _formKey.currentState?.validate() ?? false;
      if (isValided) {
        print('Form is Valid');
        setState(() {
          isLoading = true;
        });
        await signIn();
        setState(() {
          isLoading = false;
        });
      }
    },
  ),
)
© www.soinside.com 2019 - 2024. All rights reserved.