【问题标题】:Does Flutter StreamBuilder work for widgets further down the widget tree?Flutter StreamBuilder 是否适用于小部件树下的小部件?
【发布时间】:2021-08-15 07:40:03
【问题描述】:

我已将流构建器放在小部件树的顶部以侦听流。如果流有数据且数据中包含A,则返回Apage(),如图所示。从 Apage(),我可以推送到 DPage()。

如果我要从 DPage 中删除数据,流生成器会自动返回 cPage(),还是必须使用 Navigator.pop(context) 才能返回主页?

如果我要从 DPage 编辑数据并将其更改为 B,流生成器会自动返回 BPage(),还是必须使用 Navigator.pop(context) 才能返回主页?

【问题讨论】:

  • 如果你做Navigator.push,那么你总是必须Navigator.pop才能返回父页面
  • 我明白了,这意味着我需要运行 Navigator.pop 以及更改 Dpage 中的数据才能移动到 BPage。好的,知道了,我试试看。谢谢!
  • 不,不需要推送或弹出......让你给你一个示例代码......
  • 使用示例家庭代码更新问题....

标签: flutter dart stream-builder


【解决方案1】:

只是一个示例代码......通过它,您将了解如何将它与小部件一起使用并返回您想要的任何内容

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp()
      .then((value) => print("connected " + value.options.asMap.toString()))
      .catchError(
        (e) => print(
          e.toString(),
        ),
      );
  await SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]);
  SharedPreferences pref = await SharedPreferences.getInstance();
  bool security1 = pref.getBool('security') ?? false;
  runApp(
    ChangeNotifierProvider(
      create: (BuildContext context) => ThemeProvider(),
      child: streamBuilder(
stream:// your query....
builder:(context, snapshot){
if(snapshot.hasdata){
return MyApp(
        security: security1,
      ),
    ),
}
if (!snapshot.hasdata){
return Center(child: CicularProgressIndicator();
}
return HomeScreen()
}
)

  );
}

【讨论】:

  • hmmm,每当快照有数据时,您似乎返回 2 个小部件(myApp 和 LockScreen)。你为什么这样做呢?
  • 例如,如果您要返回 MyApp,并且您推送到另一个页面以删除数据,您是否仍然需要弹出 streambuilder 才能工作并返回主屏幕?
  • 抱歉这是一个错误(!snapshot.hasdata),这是我想放在那里的
  • 例如,如果您要返回 MyApp,并且您推送到另一个页面以删除数据,您是否仍然需要弹出 streambuilder 才能工作并返回主屏幕? .......不,你可以很好地了解streambuilder。自动流式更新。
  • 该代码只是示例代码,让我更新一下
猜你喜欢
  • 1970-01-01
  • 2021-05-23
  • 2020-04-18
  • 2021-03-02
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2020-03-18
  • 2020-08-19
相关资源
最近更新 更多