我有一个带有GoogleMap小部件和几个Text小部件的屏幕。我想做的是让地图在不使用AppBar的情况下横向使用整个屏幕,而在纵向方向上限制为Container大小。
现在,我只有2个脚手架小部件,它们在每次方向变化时都会重新绘制,并且在旋转几圈后,整个设备冻结,我必须重新启动它。
Widget build(BuildContext context) {
final mediaQueryData = MediaQuery.of(context);
if (mediaQueryData.orientation == Orientation.landscape) {
return Scaffold(
body:GoogleMap(
...
),
);
}
else{
return Scaffold(
appBar: AppBar(
title: Text('Title'),
),
body: ListView(
scrollDirection: Axis.vertical,
physics: NeverScrollableScrollPhysics(),
children: <Widget>[
Text('Text'),
Text('Text'),
Container(
height: MediaQuery.of(context).size.height/3,
child: GoogleMap(
...
),
),
],
),
);
}
因此,如果有人可以指导我以更有效的方式进行类似的工作,我将不胜感激。
如果没有,我也想知道嵌套在可滚动ListView中的GoogleMap小部件中是否可以有工作手势(滚动,平移等)。
答案 0 :(得分:0)
如果有人提出有人建议使用此方法,但注释被删除:
Widget build(BuildContext context) {
final isLandScape = MediaQuery.of(context).orientation == Orientation.landscape;
return Scaffold(
appBar: isLandScape ? null : AppBar(
title: Text('Title'),
),
我对Visibility小部件也使用了相同的方法,该方法除了map之外还包括其他小部件:
visible: isLandScape ? false : true,
与带有地图的容器相同:
Container(
height: isLandScape ? MediaQuery.of(context).size.height : MediaQuery.of(context).size.height/3,
child: GoogleMap(
///
),
),
现在看起来可以稳定运行。