gpt4 book ai didi

flutter - ConnectionState在主类中更改两次

转载 作者:行者123 更新时间:2023-12-03 03:55:01 25 4
gpt4 key购买 nike

我有这个应用程序,如果用户已经跳过了一次,我会在其中隐藏一个简介屏幕。
我正在使用带有提供程序的块。
我的问题是,当我热重启应用程序时,连接状态发生了两次更改,并且我花了数小时不了解原因。

这是我的代码:

我的主要类(class)

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();
},
));
}),
);
}
}

我的集团
enum IntroEvents {
ReadLocalStorage,
SetIntroSkipped,
}

class IntroBloc extends Bloc<IntroEvents, bool> {
PrefsManager _prefsManager = PrefsManager.instance;

Future<bool> checkSkipped() async {
this.add(IntroEvents.ReadLocalStorage);
final skipped =
await _prefsManager.getValue(PrefTypes.Bool, "skippedIntro");
return skipped;
}

@override
// TODO: implement initialState
bool get initialState => false;

@override
Stream<bool> mapEventToState(IntroEvents event) async* {
switch (event) {
case IntroEvents.SetIntroSkipped:
_prefsManager.setValue(PrefTypes.Bool, "skippedIntro", true);
yield true;
break;
case IntroEvents.ReadLocalStorage:
final skipped =
await _prefsManager.getValue(PrefTypes.Bool, "skippedIntro");
yield skipped;
break;
default:
print("wtffffff");
}
}
}

我的提供者
class IntroProvider with ChangeNotifier {
IntroBloc _bloc;

IntroProvider(){
print("called IntroProvider");
_bloc = IntroBloc();
}

IntroBloc get bloc => _bloc;
}

任何帮助将不胜感激。

最佳答案

使用快照时,您可以检查snapshot.hasData是否。通常,您将在快照中的数据包含在if语句中时包装要运行的功能,并在快照中没有数据时提供某种默认的Widget

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

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

return SplashScreen();
},
);

关于flutter - ConnectionState在主类中更改两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61697859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com