颤振:在台下,导航器在里面没有得到焦点



在我的应用程序中,我有一个始终可见的底部栏。我在这个网站中发现,在内存中保留选项卡同时拥有多个导航器的一个好方法是使用 Offscreen。但是,当我将导航器放入屏幕外时,它的任何内容都无法获得焦点。我做了一个非常简单的例子来重现我所说的:

void main() async {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  MyApp({
    Key key,
  }) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: MyHomeScreen(),
    );
  }
}
class MyHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Scaffold(
        body: Stack(
          children: [
            Offstage(
              offstage:false,
              child: Navigator(
                onGenerateRoute: (RouteSettings settings) {
                  return MaterialPageRoute(
                    builder: (BuildContext context) {
                      return Center(child: TextField());
                    },
                  );
                },
              ),
            ),
            Offstage(
              offstage:true,
              child: Navigator(
                onGenerateRoute: (RouteSettings settings) {
                  return MaterialPageRoute(
                    builder: (BuildContext context) {
                      return Center(child: TextField());
                    },
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

如果单击文本字段,它将不会获得焦点,因此用户无法键入任何内容。

有没有办法将焦点引导到屏幕外的活动(可见)?对这个问题还有其他建议吗?

谢谢

这是Github中当前的问题。要解决这个问题,您需要在每个导航器顶部放置一个 FocusScope 小部件。

GH 线程中的此注释有一个示例:https://github.com/flutter/flutter/issues/17098#issuecomment-414610135

相关内容

  • 没有找到相关文章

最新更新