Когда я нажимаю на контейнер с дочерним TextFormField, украшение исчезает.
Это текущее поведение приложения:
Похоже, проблема со свойством backgroundBlendMode, но я не могу понять, как создать такой же дизайн без него.
static Decoration _buttonDecoration = BoxDecoration(
backgroundBlendMode: BlendMode.modulate,
color: Color(0xFF938890),
borderRadius: BorderRadius.all(Radius.circular(45)));
Widget _emailTextField = _createTextField('Email', TextInputType.emailAddress,
Icon(Icons.email, color: Colors.white));
Widget _passwordTextField = _createTextField(
'Password',
TextInputType.text,
Icon(
Icons.lock,
color: Colors.white,
));
static Widget _createTextField(
String hintText, TextInputType textInputType, Icon icon) {
return Container(
padding: EdgeInsets.only(left: 20, right: 20),
decoration: _buttonDecoration,
margin: EdgeInsets.only(top: 20),
width: 250,
child: TextFormField(
focusNode: FocusNode(),
obscureText: textInputType == TextInputType.text ? true : false,
maxLines: 1,
keyboardType: textInputType,
autocorrect: true,
textInputAction: TextInputAction.done,
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
border: InputBorder.none,
icon: icon,
hintText: hintText,
hintStyle: TextStyle(color: Colors.white)),
),
);
}
@mathronaut да, все еще ведет себя так же





Есть несколько вещей, которые вам нужно изменить в вашем коде.
Container для украшения TextFormField, так как этот виджет уже поддерживает такой стиль.prefixIcon вместо icon, чтобы сохранить его внутри TextFormField, если это то, что вы хотите.SizedBox.Stateless или Stateful.Вот вам пример:
OutlineInputBorder _outlineBorder = OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(45)),
borderSide: BorderSide(
style: BorderStyle.none,
),
);
SizedBox(
width: 250.0,
child: TextFormField(
style: TextStyle(
color: Colors.white,
),
decoration: InputDecoration(
border: _outlineBorder,
enabledBorder: _outlineBorder,
focusedBorder: _outlineBorder,
prefixIcon: Icon(
Icons.mail,
color: Colors.white,
),
hintText: 'Email',
hintStyle: TextStyle(color: Colors.white),
filled: true,
fillColor: Colors.black45.withOpacity(0.4),
),
),
),
ОБНОВИТЬ:
Протестировал и забыл применить один и тот же стиль к enabledBorder и focusedBorder. Таким образом, цвет рамки не изменится при фокусировке на TextFormField. Я обновил код, чтобы отразить это.
Вы пытались удалить статическое ключевое слово?