Flutter ConnectionState在主类中更改了两次

Flutter ConnectionState在主类中更改了两次,flutter,dart,bloc,flutter-bloc,Flutter,Dart,Bloc,Flutter Bloc,我有这个应用程序,我有一个介绍屏幕,我想隐藏,如果用户已经跳过一次。 我正在使用bloc和一个提供者。 我的问题是,当我热重启应用程序时,连接状态改变了两次,我花了几个小时都不知道原因 这是我的密码: 我的主课 void main() => runApp(StatsApp()); class StatsApp extends StatelessWidget { @override Widget build(BuildContext context) { return Mu

我有这个应用程序,我有一个介绍屏幕,我想隐藏,如果用户已经跳过一次。 我正在使用bloc和一个提供者。 我的问题是,当我热重启应用程序时,连接状态改变了两次,我花了几个小时都不知道原因

这是我的密码:

我的主课

void main() => runApp(StatsApp());

class StatsApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (context) => IntroProvider(),
        )
      ],
      child: Consumer<IntroProvider>(builder: (context, value, child) {
        return MaterialApp(
            home: FutureBuilder(
          future: value.bloc.checkSkipped(),
          builder: (BuildContext context, snapshot) {
            print(snapshot.connectionState);
            print(snapshot.data);
            return SplashScreen();
          },
        ));
      }),
    );
  }
}

非常感谢您的帮助。

使用快照时,您可以检查
快照.hasData是否正确。通常,当快照在
if
语句中包含数据时,您会将要运行的功能包装起来,如果没有,则提供某种默认的
小部件

FutureBuilder(
  future: value.bloc.checkSkipped(),
  builder: (BuildContext context, snapshot) {
    print(snapshot.connectionState);

    if (snapshot.hasData) {
      print(snapshot.data);
    }

    return SplashScreen();
  },
);

使用快照时,您可以检查
snapshot.hasData
。通常,当快照在
if
语句中包含数据时,您会将要运行的功能包装起来,如果没有,则提供某种默认的
小部件

FutureBuilder(
  future: value.bloc.checkSkipped(),
  builder: (BuildContext context, snapshot) {
    print(snapshot.connectionState);

    if (snapshot.hasData) {
      print(snapshot.data);
    }

    return SplashScreen();
  },
);

谢谢,我仍然多次看到打印显示,但我想这与异步性质有关。但至少现在我看不到飞溅的屏幕出现然后消失。你们有什么好的资源来推荐我在哪里可以学习如何将提供者和块结合起来?我花了一些时间观看youtube视频,但大多数示例都非常简单。当然,你可以用其中一个,而不是两个。我见过get_it可以与提供者或块一起使用,但从来没有两者一起使用。谢谢,我仍然多次看到打印显示,但我想这与异步性质有关。但至少现在我看不到飞溅的屏幕出现然后消失。你们有什么好的资源来推荐我在哪里可以学习如何将提供者和块结合起来?我花了一些时间观看youtube视频,但大多数示例都非常简单。当然,你可以用其中一个,而不是两个。我见过get_it可以与provider或block一起使用,但从未同时使用它们。
FutureBuilder(
  future: value.bloc.checkSkipped(),
  builder: (BuildContext context, snapshot) {
    print(snapshot.connectionState);

    if (snapshot.hasData) {
      print(snapshot.data);
    }

    return SplashScreen();
  },
);