簡體   English   中英

如何在 Flutter 熱重載上保持 BLoC state?

[英]How to keep BLoC state on Flutter Hot Reload?

我喜歡 Flutter 熱重載,但發現我的 BLoC 中的 state 沒有保留。 每次我進行熱重載時它都會重置。

有沒有辦法保存 state 以便它在熱重載后仍然存在? (我可以接聽電話之類的嗎?)

謝謝你的時間!

@RémiRousselet出現了! 我將狀態保持在有狀態小部件之外! 為了清楚起見,這是之前和之后的代碼。 (MaterialApp home:參數和_MyHomePageState.build是真正的更改所在的位置)

錯誤代碼:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: BlocProvider<PandemicBloc>(
          bloc: PandemicBloc(), child: MyHomePage(title: 'Pandemic Tracker')),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final PandemicBloc pandemicBloc = BlocProvider.of<PandemicBloc>(context);
  int _currentTab = 0;

  Widget build(BuildContext context) {
    return DefaultTabController(...

好代碼:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: MyHomePage(title: 'Pandemic Tracker'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _currentTab = 0;
  final _pandemicBloc = PandemicBloc();

  Widget build(BuildContext context) {
    return BlocProvider<PandemicBloc>(
      bloc: _pandemicBloc,
      child: DefaultTabController(...

您可以檢查您是否在 MaterialApp 中使用全局 navigatorKey 嗎?

我刪除了我的,問題就解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM