Флаттер: Как изменить цвет границы в отключенном текстовом поле?

#flutter #dart #flutter-layout

Вопрос:

Я не могу изменить цвет границы, когда текстовое поле отключено.

Настройки Декора

 const textshowad = InputDecoration(
    labelText: 'Title',
    contentPadding: EdgeInsets.only(left: 40.0,top: 20.0,right: 20.0,bottom: 20.0),
    border: OutlineInputBorder(
      borderSide: BorderSide(color: Colors.purple,width: 2.0),
      borderRadius: BorderRadius.all(Radius.elliptical(15, 15)),
    ),
  focusedBorder: OutlineInputBorder(
  borderSide: BorderSide(color: Colors.blue, width: 2.0),
));
 

Текстовое поле

  TextFormField(
          decoration: textshowad,
        enabled: false,
        initialValue: widget.titletext,
      ),
 

Ответ №1:

В InputDecoration есть параметр «Отключенная граница».

 const textshowad = InputDecoration(
    labelText: 'Title',
    contentPadding: EdgeInsets.only(left: 40.0,top: 20.0,right: 20.0,bottom: 20.0),
    border: OutlineInputBorder(
      borderSide: BorderSide(color: Colors.purple,width: 2.0),
      borderRadius: BorderRadius.all(Radius.elliptical(15, 15)),
    ),
     disabledBorder : OutlineInputBorder(
      borderSide: BorderSide(color: Colors.grey,width: 2.0),
      borderRadius: BorderRadius.all(Radius.elliptical(15, 15)),
    ),
  focusedBorder: OutlineInputBorder(
  borderSide: BorderSide(color: Colors.blue, width: 2.0),
));
 

Ответ №2:

Для этой цели можно использовать троичные операторы. Смотрите приведенный ниже код для лучшего понимания.

 bool isEnabled=false;

const textshowad = InputDecoration(
  labelText: 'Title',
  contentPadding: EdgeInsets.only(left: 40.0,top: 20.0,right: 20.0,bottom: 20.0),
  border: isEnabled 
    ? OutlineInputBorder(...) 
    : OutlineInputBorder(
        borderSide: BorderSide(color: Colors.purple,width: 2.0),
        borderRadius: BorderRadius.all(Radius.elliptical(15, 15)),
  ),
  focusedBorder: OutlineInputBorder(
  borderSide: BorderSide(color: Colors.blue, width: 2.0),
));

...

TextFormField(
  decoration: textshowad,
  enabled: isEnabled,
  initialValue: widget.titletext,
),