10

全幅のカードの真ん中に、UI に 2 つのボタンが少し重なって表示されるようにしようとしています。Stack は配置されていない子と同じ幅しかないため、幅が double.INFINITY の SizedBox の配置されていない子を追加して、ボタンを配置するキャンバスを提供しましたが、何を配置すればよいかわかりませんSizedBox の高さとして。理想的には、ユーザーがスマートフォンまたはタブレットを使用しているかどうかにかかわらず、このウィジェットのサイズを適切に調整したいので、数値をハードコーディングするのではなく、ボタンの現在のサイズに合わせて SizedBox の高さを設定します。

特定の既存のウィジェットのサイズを見つける方法はありますか? そうでない場合、複数の画面サイズで見栄えを良くする必要があるオブジェクトの高さを決定する方法は何ですか?

コード例:

new Card(
  child: new Stack(
    children: <Widget>[
      new SizedBox(
        width: double.INFINITY,
      ),
      new Positioned(
        left: 1.0,
        child: getButtonOne(),
      ),
      new Positioned(
        right: 1.0,
        child: getButtonTwo(),
      ),
    ],
  ),
),
4

1 に答える 1

9

簡単に言えばいいえです。ビルド関数の時点では、ウィジェットはまだレイアウトされていないため、サイズがありません。

より長い答えは、カスタム レイアウト ビルダーを使用してカスタム レイアウト効果を実現できるということです。次のレベルアップは、カスタム レンダー オブジェクトを直接構築することです。これは、スタック、行、列などの実際の機能です。その後、レイアウトに関して、好きなことを行うことができます。

于 2016-12-13T03:00:35.800 に答える