首页 文章

无法在flutter / dart中验证强制输入字段小部件

提问于
浏览
0

我试图验证我的用户输入,其中包含两个输入字段“ Headers ”和“描述”后单击浮动操作按钮但我得到一个错误,当我这样做 .

notes_detail_widget.dart

class NoteDetailsWidgetState extends State<NoteDetailsWidget> {
  final _formKey = new GlobalKey<FormState>();
  String _title;
  String _description;

  _submit() {
    if (_formKey.currentState.validate()) {
      _formKey.currentState.save();
    }
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Edit note data"),
      ),
      body: new Form(
        child: new Container(
            margin: new EdgeInsets.all(16.0),
            child: new Column(
                mainAxisAlignment: MainAxisAlignment.start,
                children: <Widget>[
                  new Container(
                    child: new TextFormField(
                        decoration: new InputDecoration(
                          labelText: "Title",
                          border: InputBorder.none,
                        ),
                        validator: (val) =>
                            val.isNotEmpty ? null : "Title must not be empty",
                        onSaved: (val) => _title = val),
                  ),
                  new Container(
                      child: new Divider(
                    color: Colors.black,
                  )),
                  new TextFormField(
                    decoration: new InputDecoration(
                      labelText: "Description",
                      border: InputBorder.none,
                    ),
                    keyboardType: TextInputType.multiline,
                    maxLines: 3,
                    validator: (val) =>
                        val.isNotEmpty ? null : "Description must not be empty",
                    onSaved: (val) => _description = val,
                  )
                ])),
      ),
      floatingActionButton: new FloatingActionButton(
          onPressed: () => _submit(), child: new Icon(Icons.check)),
    );
  }
}

Error Log:

I/flutter ( 8055): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter ( 8055): The following NoSuchMethodError was thrown while handling a gesture:
I/flutter ( 8055): The method 'validate' was called on null.
I/flutter ( 8055): Receiver: null
I/flutter ( 8055): Tried calling: validate()
I/flutter ( 8055): 
I/flutter ( 8055): When the exception was thrown, this was the stack:
I/flutter ( 8055): #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
I/flutter ( 8055): #1      NoteDetailsWidgetState._submit (package:notes_crud_app/note_details_widget.dart:16:31)
I/flutter ( 8055): #2      NoteDetailsWidgetState.build.<anonymous closure> (package:notes_crud_app/note_details_widget.dart:61:28)
I/flutter ( 8055): #3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
I/flutter ( 8055): #4      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
I/flutter ( 8055): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
I/flutter ( 8055): #6      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
I/flutter ( 8055): #7      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
I/flutter ( 8055): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
I/flutter ( 8055): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
I/flutter ( 8055): #10     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
I/flutter ( 8055): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19)
I/flutter ( 8055): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
I/flutter ( 8055): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
I/flutter ( 8055): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
I/flutter ( 8055): #15     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
I/flutter ( 8055): #16     _invoke1 (dart:ui/hooks.dart:168:13)
I/flutter ( 8055): #17     _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)

我对 Dart 和_16280都很新 . 请指导 .

1 回答

  • 3

    你没有在表单中添加表单键

    body:new Form(
       key: _formKey,
       child: new Column(
         //rest of the code
       )
    ),
    

相关问题