Flutterのさまざまな画面サイズのカスタムクラスでアプリバーの高さを設定するにはどうすればよいですか?

いいえN

モジュール性のために、アプリバーを別のクラスで次のように定義しました。

class HomeAppBar extends StatefulWidget implements PreferredSizeWidget{


  HomeAppBar({Key key}) : preferredSize = Size.fromHeight(kToolbarHeight*0.8), super(key: key);

  @override
  final Size preferredSize; // default is 56.0

  @override
  _HomeAppBarState createState() => _HomeAppBarState();
}

class _HomeAppBarState extends State<HomeAppBar> {
  @override
  Widget build(BuildContext context) {
    return Container(
      //height: SizeConfig.blockSizeVertical * 20, // did not work well
      child: AppBar(
          backgroundColor: Colors.white,

          leading: IconButton(
              icon: Icon(Icons.account_circle, color: Colors.black) , onPressed: () => Scaffold.of(context).openDrawer()
          ),

          title: Container(
            //height: SizeConfig.blockSizeVertical * 20, // did not work well
            child: TextField(
              style: TextStyle(
                //fontSize: 40,
                //height: SizeConfig.blockSizeVertical * 1, // did not work well
              ),

              onTap: () {
                FocusScope.of(context).requestFocus(FocusNode());
                Navigator.push(context, PageTransition(type: PageTransitionType.fade, child: Search()));
              },
              decoration: InputDecoration(
                prefixIcon: Icon(Icons.search, color: Colors.black),
                hintText: "Search...",
              ),
            ),
          )
      ),
    );
  }
}

また、さまざまな画面サイズに合わせてアプリバーの高さを変更するSizeConfigクラスを作成しました。

import 'package:flutter/widgets.dart';

class SizeConfig {
  static MediaQueryData _mediaQueryData;
  static double screenWidth;
  static double screenHeight;
  static double blockSizeHorizontal;
  static double blockSizeVertical;

  void init(BuildContext context) {
    _mediaQueryData = MediaQuery.of(context);
    screenWidth = _mediaQueryData.size.width;
    screenHeight = _mediaQueryData.size.height;
    blockSizeHorizontal = screenWidth / 100;
    blockSizeVertical = screenHeight / 100;
  }
}

ホームページでsizeconfigを初期化します。

たくさん試しましたが、良い結果が得られませんでした。私が欲しいのは、アプリバーの高さをたとえば画面の高さの%10に設定することです。また、テキストフィールド(アプリバーのタイトル)の高さをアプリバーの高さに合わせて変更したいと思います。

私が達成したいのは、このアプリバーのより大きなバージョンです。

ここに画像の説明を入力してください

私が最終的に得たものはここにあります:

ここに画像の説明を入力してください

ご覧のとおり、ラベルのテキストサイズを大きくしようとすると、アイコンが整列せず、ヒントテキストも消えます。

いいえN

@MickaelHrndzの回答をベースとして使用し、少しカスタマイズすることで問題を解決します。AppBarはいくつかの問題を引き起こすため、よりカスタマイズ可能なものを作成したい場合は、AppBarを使用しないでください。AppBarの代わりにSafeAreaを使用alignment: Alignment.centerし、領域が上から始まるようを削除しました

SafeArea(
      child: Row(
        children: <Widget>[
          Flexible(
            fit: FlexFit.tight,
            flex: 1,
            child: FittedBox(
              child: IconButton(
                  icon: Icon(Icons.account_circle, color: Colors.black) , onPressed: () => Scaffold.of(context).openDrawer()
              ),
            ),
          ),

          Flexible(
            flex: 7,
            child: Container(
              child: TextField(
                textAlignVertical: TextAlignVertical.center,
                style: TextStyle(
                ),
                onTap: () {
                  //FocusScope.of(context).requestFocus(FocusNode());
                  Navigator.push(this.context, MaterialPageRoute(builder: (context) => Search()));

                },
                decoration: InputDecoration(
                  prefixIcon: Icon(Icons.search, color: Colors.black),
                  hintText: "Search...",
                ),
              ),
            ),
          )

        ],
      ),
    );

その結果:

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

iOS:サイズクラス(または他のソリューション)を適切に使用して、さまざまな縦向きと横向きのレイアウトを設定するにはどうすればよいですか?

分類Dev

さまざまな地理的地域に分散されたクラウドベースのWebサーバーのPHPタイムゾーンを設定するにはどうすればよいですか?

分類Dev

カスタマイズされたインデックスを使用して、同じPandasシリーズ列のさまざまな部分をさまざまな色でプロットするにはどうすればよいですか?

分類Dev

さまざまな高さのカードのリストをレイアウトするにはどうすればよいですか?

分類Dev

Windows 8のさまざまなディスプレイでさまざまなズームを使用するにはどうすればよいですか?

分類Dev

さまざまなサイズのアイコンにcss背景スプライトを再利用するにはどうすればよいですか?

分類Dev

Javaアプリのカスタムフレームとタスクバーアイコンを設定するにはどうすればよいですか?

分類Dev

さまざまな画面サイズのテキストサイズと余白を動的に調整するにはどうすればよいですか?

分類Dev

react-nativeのさまざまな画面でwindowSoftInputModeをプログラムで設定するにはどうすればよいですか?

分類Dev

ImageViewの高さを画面の解像度またはフルスクリーンと同じに設定するにはどうすればよいですか?

分類Dev

Swift iOS-UIViewの高さアンカー<=をラベルの固有のテキストサイズに設定するにはどうすればよいですか?「NSLayoutConstraint」は「Bool」に変換できません

分類Dev

リリース/デバッグに応じて、さまざまな製品フレーバーとさまざまなアイコンのgradleを設定するにはどうすればよいですか?

分類Dev

ブートストラップ4:レスポンシブフォントサイズ設定を使用して、さまざまなモニターサイズに$ font-size-baseを設定するにはどうすればよいですか?

分類Dev

アイソメトリックゲームのさまざまなクラス(単一のスーパークラスのすべてのサブタイプ)のマップを効率的/適切に保存するにはどうすればよいですか?

分類Dev

剣道グリッドExcelのエクスポート行の高さを自動サイズ設定するにはどうすればよいですか?

分類Dev

ExcelのPowerQuery From Webオプションを使用して、さまざまなサイトからニュースヘッドラインを抽出し、データをリアルタイムで保持するにはどうすればよいですか?

分類Dev

Unityのさまざまなフォルダーにカスタムアイコンを指定するにはどうすればよいですか?

分類Dev

png画像とテキストコンテナをさまざまなサイズの画面に反応させるにはどうすればよいですか?

分類Dev

メソッドにさまざまなタイプの不確定な数のリストを取得させるにはどうすればよいですか?

分類Dev

さまざまな解像度のさまざまなデバイスでゲームを実行するにはどうすればよいですか?

分類Dev

下部のシートをさまざまな画面サイズでサイズを調整するにはどうすればよいですか?

分類Dev

Qtのさまざまなボタンにさまざまなアイコンを設定するにはどうすればよいですか?

分類Dev

カスタムinputViewの高さを設定するにはどうすればよいですか?

分類Dev

<ul>内の<li>をカスタムの高さのテーブルとしてスタイル設定するにはどうすればよいですか?

分類Dev

設定したd3ストロークスタイルがデバッガーでは空の文字列として表示されますが、画面では赤で表示されるのはなぜですか?ストロークスタイルにアクセスするにはどうすればよいですか?

分類Dev

出現ドライバーのカスタムクロームバイナリパスを設定するにはどうすればよいですか?

分類Dev

さまざまなiPhoneサイズのフォントサイズを設定するにはどうすればよいですか?

分類Dev

IPがまだ設定されていないハードウェアデバイスのIPアドレスをプログラムで設定するにはどうすればよいですか?

分類Dev

2014年の時点でさまざまなiPhoneの画面サイズをサポートするにはどうすればよいですか?

Related 関連記事

  1. 1

    iOS:サイズクラス(または他のソリューション)を適切に使用して、さまざまな縦向きと横向きのレイアウトを設定するにはどうすればよいですか?

  2. 2

    さまざまな地理的地域に分散されたクラウドベースのWebサーバーのPHPタイムゾーンを設定するにはどうすればよいですか?

  3. 3

    カスタマイズされたインデックスを使用して、同じPandasシリーズ列のさまざまな部分をさまざまな色でプロットするにはどうすればよいですか?

  4. 4

    さまざまな高さのカードのリストをレイアウトするにはどうすればよいですか?

  5. 5

    Windows 8のさまざまなディスプレイでさまざまなズームを使用するにはどうすればよいですか?

  6. 6

    さまざまなサイズのアイコンにcss背景スプライトを再利用するにはどうすればよいですか?

  7. 7

    Javaアプリのカスタムフレームとタスクバーアイコンを設定するにはどうすればよいですか?

  8. 8

    さまざまな画面サイズのテキストサイズと余白を動的に調整するにはどうすればよいですか?

  9. 9

    react-nativeのさまざまな画面でwindowSoftInputModeをプログラムで設定するにはどうすればよいですか?

  10. 10

    ImageViewの高さを画面の解像度またはフルスクリーンと同じに設定するにはどうすればよいですか?

  11. 11

    Swift iOS-UIViewの高さアンカー<=をラベルの固有のテキストサイズに設定するにはどうすればよいですか?「NSLayoutConstraint」は「Bool」に変換できません

  12. 12

    リリース/デバッグに応じて、さまざまな製品フレーバーとさまざまなアイコンのgradleを設定するにはどうすればよいですか?

  13. 13

    ブートストラップ4:レスポンシブフォントサイズ設定を使用して、さまざまなモニターサイズに$ font-size-baseを設定するにはどうすればよいですか?

  14. 14

    アイソメトリックゲームのさまざまなクラス(単一のスーパークラスのすべてのサブタイプ)のマップを効率的/適切に保存するにはどうすればよいですか?

  15. 15

    剣道グリッドExcelのエクスポート行の高さを自動サイズ設定するにはどうすればよいですか?

  16. 16

    ExcelのPowerQuery From Webオプションを使用して、さまざまなサイトからニュースヘッドラインを抽出し、データをリアルタイムで保持するにはどうすればよいですか?

  17. 17

    Unityのさまざまなフォルダーにカスタムアイコンを指定するにはどうすればよいですか?

  18. 18

    png画像とテキストコンテナをさまざまなサイズの画面に反応させるにはどうすればよいですか?

  19. 19

    メソッドにさまざまなタイプの不確定な数のリストを取得させるにはどうすればよいですか?

  20. 20

    さまざまな解像度のさまざまなデバイスでゲームを実行するにはどうすればよいですか?

  21. 21

    下部のシートをさまざまな画面サイズでサイズを調整するにはどうすればよいですか?

  22. 22

    Qtのさまざまなボタンにさまざまなアイコンを設定するにはどうすればよいですか?

  23. 23

    カスタムinputViewの高さを設定するにはどうすればよいですか?

  24. 24

    <ul>内の<li>をカスタムの高さのテーブルとしてスタイル設定するにはどうすればよいですか?

  25. 25

    設定したd3ストロークスタイルがデバッガーでは空の文字列として表示されますが、画面では赤で表示されるのはなぜですか?ストロークスタイルにアクセスするにはどうすればよいですか?

  26. 26

    出現ドライバーのカスタムクロームバイナリパスを設定するにはどうすればよいですか?

  27. 27

    さまざまなiPhoneサイズのフォントサイズを設定するにはどうすればよいですか?

  28. 28

    IPがまだ設定されていないハードウェアデバイスのIPアドレスをプログラムで設定するにはどうすればよいですか?

  29. 29

    2014年の時点でさまざまなiPhoneの画面サイズをサポートするにはどうすればよいですか?

ホットタグ

アーカイブ