почему streamBuilder не печатает поле Phone? - PullRequest
0 голосов
/ 29 апреля 2020

Я пишу этот код в onpressed {} и не возвращаю номер телефона. В поле Телефон есть много номеров телефонов. На самом деле я хочу подтвердить, что номер телефона, который пользователь использует для входа, должен присутствовать в пожарном депо. , Если его нет в firestore, то он выдаст ошибку.

Мой StreamBuiler -

StreamBuilder<QuerySnapshot>(
                    stream: _firestore.collection('users').snapshots(),
                     builder: (context, snapshot){
                            if(!snapshot.hasData){
                                return Center(
                                      child: CircularProgressIndicator(
                                          backgroundColor: Colors.lightBlueAccent,
                                        ),
                                         );
                                      }
                              final ph=snapshot.data.documents;
                                List<String> store=[];
                                for(var phonenum in ph){
                                  final catA=phonenum.data['Phone'];


                                     store=[catA];
                                     print(store);
                                };
                            }

                                );

, и мой login.dart следует, пожалуйста, всем, кто скажет, где я не прав в следующем код. Спасибо.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:fmiantrader/splash.dart';
import 'componenets.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class Login extends StatefulWidget {
  static String id ='Login Screen';
  @override
  _LoginState createState() => _LoginState();
}

class _LoginState extends State<Login> {




  TextEditingController  _name = TextEditingController();
  TextEditingController  _phone = TextEditingController();


  final _form =GlobalKey<FormState>();
  final _formforphone =GlobalKey<FormState>();
  final _firestore=Firestore.instance;

//  _LoginState()   {
//    List<String> store=[];
//    String name;
//    await for(var snapshot in _firestore.collection('users').snapshots()){
//      for(var phon in snapshot.documents){
//        name=(phon.data['Phone']);
//        store=[name];
//      }
//      setState((){
//        stor: store;
//      });
//    }
//  }





  String _validateMobile(String value) {
    String pattern = r'(^(?:[+0]9)?[0-9]{11}$)';
    RegExp regExp = new RegExp(pattern);
    if (value.length == 0) {
      return '*Required';
    } else if (!regExp.hasMatch(value)) {
      return 'Invalid - Put last 11 digits only';
    }
    return null;
  }


  Widget _textFieldForName(){
    return Form(

      key: _form,
      child: Column(
        children: <Widget>[
          TextFormField(
              controller: _name,
              decoration: InputDecoration(
                contentPadding: EdgeInsets.symmetric(vertical: 10.0,horizontal: 20.0),
                border: OutlineInputBorder(
                  borderSide: BorderSide(color:Colors.blueAccent,width: 1.0),
                  borderRadius: BorderRadius.circular(32.0),
                ),
                enabledBorder: OutlineInputBorder(
                    borderSide: BorderSide(color: Colors.blueAccent),
                    borderRadius: BorderRadius.circular(32.0)
                ),
                focusedBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.blueAccent,width: 2.0),
                  borderRadius: BorderRadius.circular(32.0),
                ),
                hintText: 'Enter Your Name',
              ),
              validator: (value){
                if(value.isEmpty){
                  return 'Name is Required';
                }
              }
          )
        ],
      ),
    );
  }
  Widget _textFieldForPhone(){
    return Form(

      key: _formforphone,
      child: TextFormField(
          controller: _phone,
          keyboardType: TextInputType.phone,
          decoration: InputDecoration(
            contentPadding: EdgeInsets.symmetric(vertical: 10.0,horizontal: 20.0),
            border: OutlineInputBorder(
              borderSide: BorderSide(color:Colors.blueAccent,width: 1.0),
              borderRadius: BorderRadius.circular(32.0),
            ),
            enabledBorder: OutlineInputBorder(
                borderSide: BorderSide(color: Colors.blueAccent),
                borderRadius: BorderRadius.circular(32.0)
            ),
            focusedBorder: OutlineInputBorder(
              borderSide: BorderSide(color: Colors.blueAccent,width: 2.0),
              borderRadius: BorderRadius.circular(32.0),
            ),
            hintText: 'Enter Your Name',
          ),
          validator: _validateMobile,
      ),
    );
  }




  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        backgroundColor: Colors.white70,
        body: SingleChildScrollView(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 24.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Hero(tag: 'log', child: Container(
                  height: 200.0,
                  child: Image.asset('images/log.jpeg',height: 700,),
                )),
                SizedBox(
                  height: 48.00,
                ),
                _textFieldForName(),

                SizedBox(
                  height: 15.0,
                ),

                SizedBox(
                  height: 15.0,
                ),
                _textFieldForPhone(),

                Rounded_Button(title: 'Log In',color: Colors.blueAccent ,onPressed: (){

                  StreamBuilder<QuerySnapshot>(
                    stream: _firestore.collection('users').snapshots(),
                     builder: (context, snapshot){
                            if(!snapshot.hasData){
                                return Center(
                                      child: CircularProgressIndicator(
                                          backgroundColor: Colors.lightBlueAccent,
                                        ),
                                         );
                                      }
                              final ph=snapshot.data.documents;
                                List<String> store=[];
                                for(var phonenum in ph){
                                  final catA=phonenum.data['Phone'];


                                     store=[catA];
                                     print(store);
                                };
                            print(store);
                            }

                                );

    },
    ),
//                  var hi = this.store;

//                  final isvalid= _form.currentState.validate();
//                  if(!isvalid) {
//                    return;}
//                  _form.currentState.save();
//                  final valid= _formforphone.currentState.validate();
//                  if(!valid) {
//                    return;}
//                  _formforphone.currentState.save();
//                  if(_phone==hi){
//                    Navigator.pushNamed(context, MyHomePage.id);
//
//                  }
//                  else{
//                    print('Not allow to go ahead');
//                  }







              ],
            ),
          ),
        ),
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...