Flutter 着陆页导航用户取决于状态

Flutter landing page to navigate user depends on a state

如何将用户导航到相关屏幕?例如,如果用户已登录,则用户必须进入首页,但用户未登录,则用户必须进入登录页面。当我尝试使用导航器时,它给出了这个错误:

FlutterError(构建期间调用了 setState() 或 markNeedsBuild()。 无法将此 Overlay 小部件标记为需要构建,因为框架已经在构建小部件的过程中。仅当其祖先之一当前正在构建时,才可以在构建阶段将小部件标记为需要构建。这个例外是允许的,因为框架在子部件之前构建父部件,这意味着总是会构建一个脏的后代部件。否则,框架可能不会在此构建阶段访问此小部件。 调用 setState() 或 markNeedsBuild() 的小部件是: 覆盖-[LabeledGlobalKey#3ba8a] 进行违规调用时当前正在构建的小部件是: BlocBuilder)

此外,我使用了自动路由和自动路由生成器,但它给出的错误是:The getter 'RouteInformationReportingType' isn't defined for the class 'AutoRouteInformationProvider'。 package:auto_route/…/provider/auto_route_information_provider.dart:32

你能帮帮我吗?

代码:

class LandingPage extends StatelessWidget {
  const LandingPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: BlocBuilder<AuthCubit, AuthState>(
        builder: (context, state) {
          if (state.isUserSignedIn) {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => const HomePage()),
            );
          } else {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => const SignInPage()),
            );
          }
          return Container();
        },
      ),
    );
  }
}

你必须像这样更改代码,这将在所有小部件初始化后显示,因此它将在所有小部件初始化后导航。

if (state.isUserSignedIn) {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => const HomePage()),
            );
          } else {
            WidgetsBinding.instance!.addPostFrameCallback((_) {
               Navigator.push(
                 context,
                 MaterialPageRoute(builder: (context) => const SignInPage()),
               );
             });
          } 

我已将 flutter sdk 更新到 2.8 并更改了一些语法。就是这样