首页 > 解决方案 > Flutter Firestore如何在提交之前检查Firestore中的现有数据作为用户类型

问题描述

_buildLocationAddRoom课堂上有一个小部件。我想在将数据提交到 Firestore 之前检查 Firestore 中的位置并显示错误消息。目前,我已经尝试使用StreamBuilderFutureBuilder从 Firestore 获取位置。Validator但是我怎样才能显示与用户单击提交时相同的错误消息。当用户输入它时,我似乎无法location从 Firestore进行比较location

    Widget _buildLocation(RoomProvider roomProvider) {
    return TextFormField(
      decoration: InputDecoration(labelText: 'Locations'),
      maxLength: 100,
      validator: (value) {
        if (value == null || value.isEmpty) {
          return 'Locations is Required';
        }
        return null;
      },
      onSaved: (value) {
        roomProvider.changeLocation(value!);
      },
    );
  }

Future<bool> locationExist(String location) async {
    final QuerySnapshot result = await FirebaseFirestore.instance
        .collection('rooms')
        .where('location', isEqualTo: location.toLowerCase())
        .limit(1)
        .get();
    final List<DocumentSnapshot> document = result.docs;
    return document.length == 1;
  }

@override
  Widget build(BuildContext context) {
    final roomProvider= Provider.of<RoomProvider>(context);
    final houses = Provider.of<List<Room>>(context);
    return Scaffold(
      body: Padding(
          child: Form(
            key: _formKey,
            child: ListView(
              children: <Widget>[
                _buildLocation(roomProvider),
                // Many field
                ElevatedButton(), //Check Validation and submit to Firestore
              ],
            ),
          )),
    );
  }

标签: firebaseflutterfirebase-realtime-database

解决方案


推荐阅读