Как исправить высоту текстового поля?

#flutter #flutter-layout

#flutter #flutter-макет

Вопрос:

введите описание изображения здесь

Как вы можете видеть, высота отличается.

На картинке слева показано приложение, запущенное, когда клавиатура не всплывала. А на картинке справа показано, что приложение запускается, когда появляется клавиатура и нажимается «Горячая перезагрузка Flutter» (Android Studio).

Я хочу, чтобы текстовое поле было похоже на картинку справа без всплывающего окна клавиатуры.

Как я могу это исправить?

Панель приложений

 class CustomAppbar extends StatelessWidget with PreferredSizeWidget{
  @override
  final Size preferredSize;

  @override
  static double height = AppBar().preferredSize.height;

  CustomAppbar() : preferredSize = Size.fromHeight(height);

  @override
  Widget build(BuildContext context) {
    @override
    final double statusbarHeight = MediaQuery.of(context).padding.top;

    return Container(
      child: Stack(
        children: <Widget>[
          AppBar(
            backgroundColor: Colors.white,
            elevation: 0,
            iconTheme: IconThemeData(color: Colors.black,),
          ),
          Container(
            decoration: BoxDecoration(
                color: Colors.grey,
                borderRadius: BorderRadius.all(Radius.circular(10))
            ),
            margin: EdgeInsets.only(left: 60, top: statusbarHeight   5, bottom: 5, right: 5),
            child: InputBox(),
          )
        ],
      ),
    );
  }
}
  

Поле ввода

 class InputBox extends StatefulWidget {
  @override
  _InputBoxState createState() => _InputBoxState();
}

class _InputBoxState extends State<InputBox> {
  TextEditingController _SearchController = TextEditingController();
  FocusNode _focusNode = FocusNode();
  String _SearchText = "";

  _InputBoxState(){
    _SearchController.addListener(() {
      setState((){
        _SearchText = _SearchController.text;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return TextField(
      focusNode: _focusNode,
      style: TextStyle(fontSize: 19),
      controller: _SearchController,
      decoration: InputDecoration(
          hintText: "Search",
          border: InputBorder.none,
          prefixIcon: Icon(Icons.search, color: Colors.white,),
          suffixIcon: _focusNode.hasFocus ? IconButton(
            icon: Icon(Icons.cancel, color: Colors.white,),
            onPressed: (){
              setState((){
                _SearchController.clear();
                _SearchText = "";
                _focusNode.unfocus();
              });
            },
          ) : Container()
      )
    );
  }
}
  

Ответ №1:

   style:TextStyle(height: 20),     //custome height
  decoration: InputDecoration(
  isDense: true)                    // remove padding inside textfield
  

вы можете использовать ContentPadding, если хотите добавить отступы внутри текстового поля