一种可能的解决方案是在屏幕的该部分创建一个新的 MaterialApp,并像普通应用一样处理那里的所有内容(只是屏幕尺寸不同),如下所示:
Column(
children: <Widget>[
Container(
height: constraints.maxHeight * 0.5,
width: constraints.maxWidth,
),
Container(
height: constraints.maxHeight * 0.5,
width: constraints.maxWidth,
child: MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Color.fromRGBO(86, 86, 86, 1.00),
),
initialRoute: '/W1',
routes: {
'/W1': (context) => WidgetOne(),
'/W2': (context) => WidgetTwo(),
})),
],
),
然后像这样处理小部件的路由:
class WidgetOne extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
Navigator.pushNamed(context, '/W2');
},
child: Container(color: Colors.green));
}
}
}
class WidgetTwo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
Navigator.pushNamed(context, '/W1');
},
child: Container(color: Colors.pink));
}
}
}
结果:
https://i.stack.imgur.com/qyJ5N.gif