Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 无法在错误边框TextFormField中填充颜色_Flutter_Flutter Layout - Fatal编程技术网

Flutter 无法在错误边框TextFormField中填充颜色

Flutter 无法在错误边框TextFormField中填充颜色,flutter,flutter-layout,Flutter,Flutter Layout,我正在努力实现这一点,但没有办法定制错误边界,错误边界没有选择填充 这是我的TexFormField和InputEdition: TextFormField( controller: TextEditingController(), style: Theme.of(context).textTheme.subtitle2, decoration: CustomDecoration.inputFilledDecoration(contex

我正在努力实现这一点,但没有办法定制错误边界,错误边界没有选择填充

这是我的TexFormField和InputEdition:

     TextFormField(
        controller: TextEditingController(),
        style: Theme.of(context).textTheme.subtitle2,
        decoration: CustomDecoration.inputFilledDecoration(context, hint),
        onSaved: onSaved,
        validator: isRequired ? _exists : null),);



    InputDecoration inputFilledDecoration(BuildContext context, String hint) => 
         InputDecoration(
      border: InputBorder.none,
      contentPadding: EdgeInsets.symmetric(horizontal: PaddingMetric.inputHorizontal, 
      vertical: PaddingMetric.inputVertical),
      disabledBorder: InputBorder.none,
      enabledBorder: InputBorder.none,
      fillColor: Theme.of(context).dividerColor,
      filled: true,
      focusedBorder: OutlineInputBorder(borderSide: BorderSide(width: 1)),
  isDense: false,
  labelText: hint ); 

我认为唯一的方法是提供一个自定义逻辑,并设置一个不同的装饰,以防出现问题或错误。 我已经做了一个小代码,也许它可以帮助;如果您将字段留空,然后按submit,则文本字段中会出现红色:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final appTitle = 'Form Validation Demo';

    return MaterialApp(
      title: appTitle,
      home: Scaffold(
        appBar: AppBar(
          title: Text(appTitle),
        ),
        body: MyCustomForm(),
      ),
    );
  }
}

class MyCustomForm extends StatefulWidget {
  @override
  MyCustomFormState createState() => MyCustomFormState();
}

class MyCustomFormState extends State<MyCustomForm> {
  final _formKey = GlobalKey<FormState>();

  bool isError = false;

  InputDecoration ok(BuildContext context, String hint) => 
         InputDecoration(
      border: InputBorder.none,
      disabledBorder: InputBorder.none,
      enabledBorder: InputBorder.none,
      fillColor: Colors.green,
      filled: true,
      focusedBorder: OutlineInputBorder(borderSide: BorderSide(width: 1)),
  isDense: false,
  labelText: hint ); 

  InputDecoration err(BuildContext context, String hint) => 
         InputDecoration(
      border: InputBorder.none,
      disabledBorder: InputBorder.none,
      enabledBorder: InputBorder.none,
      fillColor: Colors.red,
      filled: true,
      focusedBorder: OutlineInputBorder(borderSide: BorderSide(width: 1)),
  isDense: false,
  labelText: hint ); 

  @override
  Widget build(BuildContext context) {
    // Build a Form widget using the _formKey created above.
    return Form(
      key: _formKey,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          TextFormField(
            decoration: isError ? err(context,"err") : ok(context,"ok"),
            validator: (value) {
              if (value.isEmpty) {
                return 'Please enter some text';
              }
              return null;
            },
          ),
          Padding(
            padding: const EdgeInsets.symmetric(vertical: 16.0),
            child: RaisedButton(
              onPressed: () {
                // Validate returns true if the form is valid, or false
                // otherwise.
                if (_formKey.currentState.validate()) {
                  setState(() { isError = false; });
                }
                else {
                  setState(() { isError = true; });
                }
              },
              child: Text('Submit'),
            ),
          ),
        ],
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终appTitle='表单验证演示';
返回材料PP(
标题:appTitle,
家:脚手架(
appBar:appBar(
标题:文本(appTitle),
),
正文:MyCustomForm(),
),
);
}
}
类MyCustomForm扩展了StatefulWidget{
@凌驾
MyCustomFormState createState()=>MyCustomFormState();
}
类MyCustomFormState扩展了状态{
final _formKey=GlobalKey();
bool-isError=false;
InputDecoration ok(BuildContext上下文,字符串提示)=>
输入装饰(
边框:InputBorder.none,
disabledBorder:InputBorder.none,
enabledBorder:InputBorder.none,
fillColor:Colors.green,
是的,
FocusedOrder:OutlineInputBorder(borderSide:borderSide(宽度:1)),
isDense:错,
标签文本:提示);
InputDecoration错误(BuildContext上下文,字符串提示)=>
输入装饰(
边框:InputBorder.none,
disabledBorder:InputBorder.none,
enabledBorder:InputBorder.none,
fillColor:Colors.red,
是的,
FocusedOrder:OutlineInputBorder(borderSide:borderSide(宽度:1)),
isDense:错,
标签文本:提示);
@凌驾
小部件构建(构建上下文){
//使用上面创建的_formKey构建表单小部件。
报税表(
键:_formKey,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
TextFormField(
装饰:isError?err(上下文,“err”):ok(上下文,“ok”),
验证器:(值){
if(value.isEmpty){
返回“请输入一些文本”;
}
返回null;
},
),
填充物(
填充:常量边集。对称(垂直:16.0),
孩子:升起按钮(
已按下:(){
//如果表单有效,则Validate返回true,否则返回false
//否则。
if(_formKey.currentState.validate()){
setState((){isError=false;});
}
否则{
setState((){isError=true;});
}
},
子项:文本('Submit'),
),
),
],
),
);
}
}

我认为唯一的方法是提供一个自定义逻辑并设置一个不同的装饰,以防它正常或出现错误。 我已经做了一个小代码,也许它可以帮助;如果您将字段留空,然后按submit,则文本字段中会出现红色:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final appTitle = 'Form Validation Demo';

    return MaterialApp(
      title: appTitle,
      home: Scaffold(
        appBar: AppBar(
          title: Text(appTitle),
        ),
        body: MyCustomForm(),
      ),
    );
  }
}

class MyCustomForm extends StatefulWidget {
  @override
  MyCustomFormState createState() => MyCustomFormState();
}

class MyCustomFormState extends State<MyCustomForm> {
  final _formKey = GlobalKey<FormState>();

  bool isError = false;

  InputDecoration ok(BuildContext context, String hint) => 
         InputDecoration(
      border: InputBorder.none,
      disabledBorder: InputBorder.none,
      enabledBorder: InputBorder.none,
      fillColor: Colors.green,
      filled: true,
      focusedBorder: OutlineInputBorder(borderSide: BorderSide(width: 1)),
  isDense: false,
  labelText: hint ); 

  InputDecoration err(BuildContext context, String hint) => 
         InputDecoration(
      border: InputBorder.none,
      disabledBorder: InputBorder.none,
      enabledBorder: InputBorder.none,
      fillColor: Colors.red,
      filled: true,
      focusedBorder: OutlineInputBorder(borderSide: BorderSide(width: 1)),
  isDense: false,
  labelText: hint ); 

  @override
  Widget build(BuildContext context) {
    // Build a Form widget using the _formKey created above.
    return Form(
      key: _formKey,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          TextFormField(
            decoration: isError ? err(context,"err") : ok(context,"ok"),
            validator: (value) {
              if (value.isEmpty) {
                return 'Please enter some text';
              }
              return null;
            },
          ),
          Padding(
            padding: const EdgeInsets.symmetric(vertical: 16.0),
            child: RaisedButton(
              onPressed: () {
                // Validate returns true if the form is valid, or false
                // otherwise.
                if (_formKey.currentState.validate()) {
                  setState(() { isError = false; });
                }
                else {
                  setState(() { isError = true; });
                }
              },
              child: Text('Submit'),
            ),
          ),
        ],
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终appTitle='表单验证演示';
返回材料PP(
标题:appTitle,
家:脚手架(
appBar:appBar(
标题:文本(appTitle),
),
正文:MyCustomForm(),
),
);
}
}
类MyCustomForm扩展了StatefulWidget{
@凌驾
MyCustomFormState createState()=>MyCustomFormState();
}
类MyCustomFormState扩展了状态{
final _formKey=GlobalKey();
bool-isError=false;
InputDecoration ok(BuildContext上下文,字符串提示)=>
输入装饰(
边框:InputBorder.none,
disabledBorder:InputBorder.none,
enabledBorder:InputBorder.none,
fillColor:Colors.green,
是的,
FocusedOrder:OutlineInputBorder(borderSide:borderSide(宽度:1)),
isDense:错,
标签文本:提示);
InputDecoration错误(BuildContext上下文,字符串提示)=>
输入装饰(
边框:InputBorder.none,
disabledBorder:InputBorder.none,
enabledBorder:InputBorder.none,
fillColor:Colors.red,
是的,
FocusedOrder:OutlineInputBorder(borderSide:borderSide(宽度:1)),
isDense:错,
标签文本:提示);
@凌驾
小部件构建(构建上下文){
//使用上面创建的_formKey构建表单小部件。
报税表(
键:_formKey,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
TextFormField(
装饰:isError?err(上下文,“err”):ok(上下文,“ok”),
验证器:(值){
if(value.isEmpty){
返回“请输入一些文本”;
}
返回null;
},
),
填充物(
填充:常量边集。对称(垂直:16.0),
孩子:升起按钮(
已按下:(){
//如果表单有效,则Validate返回true,否则返回false
//否则。
if(_formKey.currentState.validate()){
setState((){isError=false;});
}
否则{
setState((){isError=true;});
}
},
子项:文本('Submit'),
),
),
],
),
);
}
}

有你需要的吗?有你需要的吗?