虎視眈々と

Flutter × Firebaseを研究するアプリエンジニア

Flutterでバリデーションする

上の記事に書きてるようなバリデーション方法のやり方を載せておく

class _EditProfileState extends State<EditProfile> {

  final _nameInputController = TextEditingController();
  final _intoroductionInputController = TextEditingController();

  final _formKey = GlobalKey<FormState>();


  @override
  void initState() {
    super.initState();
    _initSet();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Edit Profile"),
        actions: <Widget>[
          StreamBuilder<bool>(
            stream: null,
            builder: (_, snapshot) {
              if (!snapshot.hasData || !snapshot.data) {
                return FlatButton(
                  onPressed: () {
                    _formKey.currentState.validate();
                  },
                  child: const Text(
                    "Done",
                    style: const TextStyle(color: Colors.blue),
                  ),
                );
              }
              return CupertinoActivityIndicator();
            },
          )
        ],
      ),
      body: Form(
        key: _formKey,
        child: CustomScrollView(
              slivers: <Widget>[
                _profileImage(user),
                _buildProfileSetting(
                  "名前",
                  rightLayout: Flexible(
                    child: TextFormField(
                      controller: _nameInputController,
                      validator: (value) {
                        if (value.isEmpty) {
                          return 'Not allow empty text';
                        }
                      },
                      decoration: InputDecoration(
                        border: UnderlineInputBorder(),
                        labelText: "UserName",
                      ),
                    ),
                  ),
                ),
              ],
            );
          },
        ),
      ),
    );
  }

詳しくはこちら

flutter.dev