flutter 導航自定義搜索高度TextField hintText向上移動的問題

關于這個問題自己百度了一大圈也去flutter的GitHub上看相關資料都沒有找到有效的解決方案痰洒,最終自己摸索了幾個小時搞定了敬察。以下代碼有多余的自行減刪。

如果你需要改變導航上面兩遍的間距 修改 AppBar里面的 titleSpacing, 這里默認的是16茴晋,如果你是子頁面有返回按鈕想要隱藏的畫可以設置AppBar leading: null, automaticallyImplyLeading: false,

本來是想著在外層增加一個 Container自定義高度 設置下

class TextFieldWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
//      padding: EdgeInsets.only(left:8,right: 8),
      decoration: BoxDecoration(
        borderRadius:BorderRadius.circular(20),
        border: Border.all(color: Colors.grey)
      ),
      height: 40,
        child:  TextField(
          autofocus: false,
          minLines: 1,
          enableInteractiveSelection: false,

          decoration: InputDecoration(
            border: InputBorder.none, // 去掉下滑線
            hintText: '請輸入搜索內(nèi)容',
            contentPadding: EdgeInsets.all(0),
            prefixIcon: Icon(Icons.search),
              alignLabelWithHint: true,
            helperStyle: TextStyle(
                fontSize: 14
            ),

//            enabledBorder: OutlineInputBorder(
//              /*邊角*/
//              borderRadius:BorderRadius.circular(20),
//              borderSide: BorderSide(
//                color: Colors.white, //邊線顏色為白色
//                width: 1, //邊線寬度為2
//              ),
//            ),
//            focusedBorder: OutlineInputBorder(
//              borderSide: BorderSide(
//                color: Colors.white, //邊框顏色為白色
//                width: 1, //寬度為5
//              ),
//              borderRadius:BorderRadius.circular(20),
//
//            ),
          ),
          style: TextStyle(
            fontSize: 14,
              textBaseline:TextBaseline.alphabetic,

          ),

      ),
    );
  }
}

image.png

很明顯 hintText 位置沒有居中呛每。解決方案打開注釋 enabledBorder focusedBorder 即可

image.png
class TextFieldWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
//      padding: EdgeInsets.only(left:8,right: 8),
      decoration: BoxDecoration(
        borderRadius:BorderRadius.circular(20),
        border: Border.all(color: Colors.grey)
      ),
      height: 40,
        child:  TextField(
          autofocus: false,
          minLines: 1,
          enableInteractiveSelection: false,

          decoration: InputDecoration(
//            border: InputBorder.none, // 去掉下滑線
            hintText: '請輸入搜索內(nèi)容',
            contentPadding: EdgeInsets.all(0),
            prefixIcon: Icon(Icons.search),
              alignLabelWithHint: true,
//如果跟你預計的居中不理想 可以微調(diào)下height的值
            hintStyle:TextStyle(
            height: 2.0,
             ) ,
            enabledBorder: OutlineInputBorder(
              /*邊角*/
              borderRadius:BorderRadius.circular(20),
              borderSide: BorderSide(
                color: Colors.white, //邊線顏色為白色
                width: 1, //邊線寬度為2
              ),
            ),
            focusedBorder: OutlineInputBorder(
              borderSide: BorderSide(
                color: Colors.white, //邊框顏色為白色
                width: 1, //寬度為5
              ),
              borderRadius:BorderRadius.circular(20),

            ),
          ),


          style: TextStyle(
            fontSize: 14,
              textBaseline:TextBaseline.alphabetic,

          ),

      ),
    );
  }
}

另一種解決方案是從TextField 入手去掉 Container decoration

class TextFieldWidget extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
   return Container(
//      padding: EdgeInsets.only(left:8,right: 8),
//      decoration: BoxDecoration(
//        borderRadius:BorderRadius.circular(20),
//        border: Border.all(color: Colors.grey)
//      ),
     height: 40,
       child:  TextField(
         autofocus: false,
         minLines: 1,
         enableInteractiveSelection: false,

         decoration: InputDecoration(
//            border: InputBorder.none, // 去掉下滑線
           hintText: '請輸入搜索內(nèi)容',
           contentPadding: EdgeInsets.all(0),
           prefixIcon: Icon(Icons.search),
             alignLabelWithHint: true,
           helperStyle: TextStyle(
               fontSize: 14
           ),

           enabledBorder: OutlineInputBorder(
             /*邊角*/
             borderRadius:BorderRadius.circular(20),
             borderSide: BorderSide(
               color: Colors.grey, //邊線顏色為白色
               width: 1, //邊線寬度為2
             ),
           ),
           focusedBorder: OutlineInputBorder(
             borderSide: BorderSide(
               color: Colors.grey, //邊框顏色為白色
               width: 1, //寬度為5
             ),
             borderRadius:BorderRadius.circular(20),

           ),
         ),


         style: TextStyle(
           fontSize: 14,
             textBaseline:TextBaseline.alphabetic,

         ),

     ),
   );
 }
}

如果想實現(xiàn)這種效果


image.png
class TextFieldWidget extends StatelessWidget {
  @override
   Widget build(BuildContext context) {
    return Container(

      padding: EdgeInsets.only(left:0,right: 8),
      decoration: BoxDecoration(
        color: Colors.black12,
        borderRadius:BorderRadius.circular(8),
//        border: Border.all(color: Colors.transparent)
      ),
      height: 33,
      child:  TextField(
        autofocus: false,
        minLines: 1,
        enableInteractiveSelection: false,

        decoration: InputDecoration(
          hintText: '請輸入搜索內(nèi)容',
          contentPadding: EdgeInsets.all(0),
          prefixIcon: Icon(Icons.search,color: Colors.grey,),
          alignLabelWithHint: true,
//如果跟你預計的居中不理想 可以微調(diào)下height的值
          hintStyle:TextStyle(
            height: 2.1,
          ) ,
          border: const OutlineInputBorder(
            gapPadding: 0,
            borderSide: BorderSide(
              width: 0,
              style: BorderStyle.none,
            ),
          ),
        ),


        style: TextStyle(
          fontSize: 14,
          textBaseline:TextBaseline.alphabetic,

        ),

      ),
    );
  }
}

如果不能居中可以稍微調(diào)下這個

如果不能居中可以稍微調(diào)下這個
 decoration: InputDecoration(
   hintStyle:TextStyle(
            height: 2.5,
          ) ,
)

使用

    return Scaffold(

        appBar:PreferredSize(
          //設置導航高度與ios一直 ios 默認導航 44 狀態(tài)欄 20恤溶,這里默認是60
            preferredSize: Size.fromHeight(44),
            child: AppBar(
//              leading  automaticallyImplyLeading 一起使用可以在root以外有返回的按鈕吧返回按鈕位置給覆蓋乓诽,
              leading: null,
              automaticallyImplyLeading: false,
//            titleSpacing 距離屏幕兩邊的距離默認16
              titleSpacing: 8,

              title:  TextFieldWidget(
              ),
            )
        )

    );
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宏娄,隨后出現(xiàn)的幾起案子问裕,更是在濱河造成了極大的恐慌逮壁,老刑警劉巖孵坚,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窥淆,居然都是意外死亡卖宠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門忧饭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扛伍,“玉大人,你說我怎么就攤上這事词裤〈倘鳎” “怎么了鳖宾?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逆航。 經(jīng)常有香客問我鼎文,道長,這世上最難降的妖魔是什么因俐? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任拇惋,我火速辦了婚禮,結果婚禮上抹剩,老公的妹妹穿的比我還像新娘撑帖。我一直安慰自己,他們只是感情好澳眷,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布胡嘿。 她就那樣靜靜地躺著,像睡著了一般钳踊。 火紅的嫁衣襯著肌膚如雪灶平。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天箍土,我揣著相機與錄音逢享,去河邊找鬼。 笑死吴藻,一個胖子當著我的面吹牛瞒爬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沟堡,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼侧但,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了航罗?” 一聲冷哼從身側響起禀横,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粥血,沒想到半個月后柏锄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡复亏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年趾娃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缔御。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡抬闷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耕突,到底是詐尸還是另有隱情笤成,我是刑警寧澤评架,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站炕泳,受9級特大地震影響古程,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喊崖,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一挣磨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荤懂,春花似錦茁裙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至廊宪,卻和暖如春矾瘾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背箭启。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工壕翩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人傅寡。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓放妈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荐操。 傳聞我的和親對象是個殘疾皇子芜抒,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Flutter是Google開發(fā)的一套全新的跨平臺、開源UI框架(本質(zhì)上就是sdk)托启。 支持iOS宅倒、Android...
    HarveyLegend閱讀 8,168評論 1 43
  • 在上一篇文章中以簡單的方式對Flutter自己提供的演示進行了一個簡單的分析倔撞,當然那是遠遠不夠糊秆。本來打算為大家?guī)?..
    奇葩AnJoiner閱讀 873評論 0 4
  • 版權聲明:本文為博主原創(chuàng)文章吁系,遵循 CC 4.0 BY-SA 版權協(xié)議妥曲,轉載請附上原文出處鏈接和本聲明。本文鏈接:...
    壹塵子閱讀 4,367評論 1 1
  • 當我墮落到與這些人為伍的時候煤傍,沒有語言可以描述我靈魂的隱痛…… 我感覺自己要成為一位博學多識区丑、卓越優(yōu)秀的人的希望在...
    宛丘花卷閱讀 330評論 1 2
  • 我萬分幸運并深深地感恩感恩,感恩遇到李硯善董事長持痰,感恩董事長研發(fā)的水靈子產(chǎn)品,杆钍矗慧千萬家工窍,帶給世人健康幸福割卖,改造水...
    唐亞濤閱讀 154評論 0 0