firebase 显示警告:不要跨异步间隙使用BuildContexts

tpxzln5u  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(150)
if (_formKey.currentState!.validate()) {
                      try {
                        final newUser =
                            await _auth.createUserWithEmailAndPassword(
                                email: email.text, password: password.text);
                        if (newUser != null) {
                          // Navigator.push(
                          //     context,
                          //     MaterialPageRoute(
                          //       builder: (context) => DashboardScreen(),
                          //     ));
                          Navigator.pushNamed(context, 'dashboard');
                        }

                        setState(() {});
                      } catch (e) {
                        print(e);
                      }
                    }
                  },

此警告显示在Navigator.pushNamed(context,“ Jmeter 板”)上;试图导航到 Jmeter 板屏幕。

wz3gfoph

wz3gfoph1#

**1.**您必须设置延迟,因为其他流程可以在此之前完成

Future.delayed(Duration(milliseconds: 200)).then((value) {
      Navigator.pushNamed(context, 'dashboard')
});

**2.**在Navigator.pushNamed(context, 'dashboard')之前添加if (!mounted) return;
**3.**请在导航器flutter之前放置wait,因为您使用了异步方法调用,因此必须等到流程完成后才能导航到页面

await Navigator.pushNamed(context, 'dashboard');

**4.**此外,您还可以将navigator存储到var中,然后使用它。

final nav = Navigator.of(context);
 nav.pushNamed('dashboard');

相关问题