Flutter TextFormField自动散焦

时间:2018-08-12 07:04:24

标签: mobile dart flutter

这是我用来在屏幕上显示表单的功能。

Contexts.objects.filter(user__username=user_request.get("user"))

现在一切正常。问题开始于我添加

Form getNewLoanForm() {
return new Form(
  child: new Column(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: <Widget>[
      new TextFormField(
        decoration: new InputDecoration(labelText: 'Loan name'),
        validator: (value) {
          if (value.isEmpty) {
            return 'Enter name';
          } else {
            return null;
          }
        },
        onSaved: (value) => _loanName = value,
      ),
      new Container(height: 16.0),
      new RaisedButton(
        child: new Text(
          'ADD',
          style: new TextStyle(color: Colors.white, fontSize: 17.0),
        ),
        onPressed: addNewLoan,
        color: Colors.blue,
      )
    ],
  ),
);
}

我在班级声明了这个变量。并以表格形式使用。

final formKey = new GlobalKey<FormState>();

像这样,现在TextFormField开始表现异常。现在,如果我选择文本字段,它将自动取消选择自己。

现在请记住,如果我将此页面设为根页面,则不会发生这种情况。但是我要从我的根页面推送此页面。如果我将此页面设置为我的根页面,那么那里不会出现问题。

有什么想法吗?

好的,我要全班上课

return new Form(
  key: formKey,

我的根页面

import 'package:flutter/material.dart';
import 'package:datetime_picker_formfield/datetime_picker_formfield.dart';
import 'package:intl/intl.dart';

class NewLoan extends StatelessWidget {
   String _loanName;
   String _dateCreated;
   final formKey = new GlobalKey<FormState>();

   void addNewLoan() {}

   Form getNewLoanForm(BuildContext context) {
       final dateFormat = DateFormat("dd/MM/yyyy");
       return new Form(
       // key: formKey,
       child: new Column(
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: <Widget>[
      new TextFormField(
        decoration: new InputDecoration(labelText: 'Loan name'),
        validator: (value) {
          if (value.isEmpty) {
            return 'Enter name';
          } else {
            _loanName = value;
            return null;
          }
        },
      ),
      new Container(height: 16.0),
      DateTimePickerFormField(
        decoration: new InputDecoration(labelText: 'Date'),
        format: dateFormat,
        dateOnly: true,
        onChanged: (date) {
          print('Selected date ${date.toString()}');
          Scaffold
              .of(context)
              .showSnackBar(SnackBar(content: Text('$date')));
        },
      ),
      new Container(height: 16.0),
      new RaisedButton(
        child: new Text(
          'ADD',
          style: new TextStyle(color: Colors.white, fontSize: 17.0),
        ),
        onPressed: addNewLoan,
        color: Colors.blue,
      )
    ],
  ),
);
}

  @override
  Widget build(BuildContext context) {
    return Scaffold(
     appBar: new AppBar(
      title: new Text('New Loan'),
  ),
  body: new Container(
    padding: new EdgeInsets.all(20.0),
    child: getNewLoanForm(context),
  ),
);
 }
}

0 个答案:

没有答案