2017-10-09 5 views
2

スクリーンの埋め込みのためにAppBarの高さをランドスケープモードに設定する方法フラッターランドスケープの向きのレイアウト

enter image description here

通常のフラッタ風景のレイアウトウィジェットはありますか?前述の問題のレイアウトは以下の通りです:

new Padding(
    padding: media.padding, 
    child: new Scaffold(
     key: _scaffoldKey, 
     body: new Row(
     children: <Widget>[ 
      new LimitedBox(
      maxWidth: 320.0, 
      child: new Column(children: [ 
       _buildAppBar(), 
       new Expanded(
        child: new ModuleDrawer(
       widget.module.sugar, 
       topPadding: 0.0, 
      )), 
      ]), 
     ), 
      new Expanded(
      child: new RecordList(
       widget.model, 
      ), 
     ), 
     ], 
    ))); 

答えて

3

あなたはおそらく、単純なMediaQueryて向きを検出の組み合わせで、足場のprimaryプロパティを使用することができます。したがって、ランドスケープモードでは、AppBarの高さを判断するときにステータスバーの高さを考慮しないようにScaffoldに指示するには、primaryフラグをfalseに設定します。

the documentationを参照してください:

この足場は、画面の上部に表示されているかどうか。

trueの場合、appBarの高さは、画面のステータスバーの高さ、つまりMediaQueryの上の詰め物によって拡張されます。

このプロパティの既定値は、AppBar.primaryの既定値と同じですが、trueです。

だからあなたの場合には、このような何かを行う必要があります。

@override 
Widget build(BuildContext context) { 
    final Orientation orientation = MediaQuery.of(context).orientation; 
    final bool isLandscape = orientation == Orientation.landscape; 

    return new Scaffold(
     primary: isLandscape? false : true, 
     appBar: new AppBar(
      title: new Text('AppBar title'), 
     ), 
     body: new Center(
      child: new Text('Look at the appbar on landscape!'), 
     ), 
    ); 
} 
+0

タイムセーバー;)Thxを。あなたのソリューションを使用して、フラットギャラリーアニメーションウィジェットをランドスケープモードで動作させます – toregua

+0

ユースケースに基づいて、[OrientationBuilder](https://docs.flutter.io/flutter/widgets/OrientationBuilder-class.html)を使用することもできます。 。デバイスの向きに依存するのではなく、親ウィジェットの比率に基づいています。 –

関連する問題