2017-05-09 25 views
1

PopupMenuのアイテムを垂直方向だけでなく水平方向に整列させる方法はありますか?PopupMenuEntryの水平方向の整列

ウィジェットに多くのビヘイビアを追加し、PopupMenuの子として渡すと、レンダリング以外のすべての要件が提供されます。

答えて

3

フラッターのpopup menuには多くの内部定数があり、ポップアップの軸が垂直であることが必要です。軸を変更してレイアウトやサイジングを完全に制御したい場合は、そのファイルのコピーを作成して編集を開始できます。

レイアウトについてあまり気にしない人は、ウィジェットを1つのポップアップメニュー項目として埋め込むことで偽装することができます。私はコードに掘ってきたと私は最善のアプローチについての確認のために探していた

screenshot

import 'package:flutter/material.dart'; 

void main() { 
    runApp(new MyApp()); 
} 

class MyApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     title: 'Flutter Demo', 
     home: new MyHomePage(), 
    ); 
    } 
} 

/// An arbitrary widget that lives in a popup menu 
class PopupMenuWidget<T> extends PopupMenuEntry<T> { 
    const PopupMenuWidget({ Key key, this.height, this.child }) : super(key: key); 

    @override 
    final Widget child; 

    @override 
    final double height; 

    @override 
    bool get enabled => false; 

    @override 
    _PopupMenuWidgetState createState() => new _PopupMenuWidgetState(); 
} 

class _PopupMenuWidgetState extends State<PopupMenuWidget> { 
    @override 
    Widget build(BuildContext context) => widget.child; 
} 


class MyHomePage extends StatelessWidget { 
    MyHomePage({Key key}) : super(key: key); 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(
     actions: <Widget>[ 
      new PopupMenuButton<String>(
      onSelected: (String value) { 
       print("You selected $value"); 
      }, 
      itemBuilder: (BuildContext context) { 
       return [ 
       new PopupMenuWidget(
        height: 40.0, 
        child: new Row(
        children: [ 
         new IconButton(
         icon: new Icon(Icons.add), 
         onPressed:() => Navigator.pop(context, 'add')), 
         new IconButton(
         icon: new Icon(Icons.remove), 
         onPressed:() => Navigator.pop(context, 'remove')), 
        ], 
       ), 
       ), 
       ]; 
      } 
     ), 
     ], 
    ), 
    ); 
    } 
} 
+0

:ここではそのアプローチを実証するいくつかのコードです。ありがとう@コリン。 –

関連する問題