Αναζήτηση κλειδί μέσα σειρά, πώς να τα αποκτήσετε πρόσβαση στο .where για αναζήτηση

ψήφοι
0

Θα ήθελα να αποθηκεύσει τα κλειδιά αναζήτησή μου σε μια σειρά, έτσι ώστε να μπορώ να ψάξετε σε πολλαπλές πράγματα με μια ενιαία γραμμή κώδικα, αλλά δεν λειτουργεί.

im χρησιμοποιώντας βασική αναζήτηση ακριβώς σε αυτό https://github.com/rajayogan/flutterfirestore-instantsearch

τι έχω ουσιαστικά είναι πολλά έγγραφα που έχει μια σειρά, μια σειρά αποτελείται από χάρτη που έχει πληροφορίες όπως ITEM_NAME, κλπ ... αυτό που θέλετε να αναζητήσετε είναι η ITEM_NAME.

Προσπάθησα να θέσει

import 'package:cloud_firestore/cloud_firestore.dart';


//this class should take the arraysearch which is  that i wish to be my searchkeys


class SearchService {
  searchByName(String searchField) {
    return Firestore.instance
        .collection('Foodtruckinfo')
        .where('arraysearch',
        isEqualTo: searchField.substring(0, 1).toUpperCase())
        .getDocuments();
   }
 }



 import 'package:cloud_firestore/cloud_firestore.dart';
  import 'package:customer_register_login/Customer/searchmethod.dart';

  import 'package:flutter/material.dart';

     class MyHomePage extends StatefulWidget {
     @override
    _MyHomePageState createState() => new _MyHomePageState();
   }

    class _MyHomePageState extends State<MyHomePage> {
    var queryResultSet = [];
    var tempSearchStore = [];

    initiateSearch(value) {
     if (value.length == 0) {
       setState(() {
         queryResultSet = [];
         tempSearchStore = [];
        });
       }

     var capitalizedValue =
          value.substring(0, 1).toUpperCase() + value.substring(1);

     if (queryResultSet.length == 0 && value.length == 1) {
       SearchService().searchByName(value).then((QuerySnapshot docs) {
         for (int i = 0; i < docs.documents.length; ++i) {
           queryResultSet.add(docs.documents[i].data);
          }
       });
     } else {
        tempSearchStore = [];
        queryResultSet.forEach((element) {
         if (element['item_name'].startsWith(capitalizedValue)) {
           setState(() {
              tempSearchStore.add(element);
           });
         }
        });
     }
   }

    @override
   Widget build(BuildContext context) {
     return new Scaffold(
             appBar: new AppBar(
                title: Text('Firestore search'),
              ),
              body: ListView(children: <Widget>[
                Padding(
                  padding: const EdgeInsets.all(10.0),
                  child: TextField(
                   onChanged: (val) {
                   initiateSearch(val);
               },
               decoration: InputDecoration(
                   prefixIcon: IconButton(
                     color: Colors.black,
                      icon: Icon(Icons.arrow_back),
                    iconSize: 20.0,
                    onPressed: () {
                        Navigator.of(context).pop();
                     },
                   ),
                    contentPadding: EdgeInsets.only(left: 25.0),
                    hintText: 'Search by name',
                   border: OutlineInputBorder(
                       borderRadius: BorderRadius.circular(4.0))),
              ),
            ),
                 SizedBox(height: 10.0),
                   GridView.count(
                  padding: EdgeInsets.only(left: 10.0, right: 10.0),
               crossAxisCount: 2,
                crossAxisSpacing: 4.0,
                mainAxisSpacing: 4.0,
                primary: false,
               shrinkWrap: true,
                children: tempSearchStore.map((element) {
                   return buildResultCard(element);
               }).toList())
          ]));
       }
   }

      Widget buildResultCard(data) {
        return Card(
             shape: RoundedRectangleBorder(borderRadius: 
    BorderRadius.circular(10.0)),
     elevation: 2.0,
      child: Container(
          child: Center(
              child: Text(
         data['item_name'],
         textAlign: TextAlign.center,
        style: TextStyle(
          color: Colors.black,
          fontSize: 20.0,
        ),
       )))); 
    }

[1]: https://ibb.co/47p2dBD <εικόνα επιθυμητό πλήκτρο

[2]: https://ibb.co/kQkWKsq <εικόνα επιθυμητή αναζήτησης (σε 1 # έγγραφο)

[3]: https://ibb.co/MVnBtCd <εικόνα επιθυμητή αναζήτησης (σε 2 # έγγραφο)

[4] https://ibb.co/yk04RJ4 <εικόνα επιθυμητή αναζήτησης (σε 3 # έγγραφο)

Δημοσιεύθηκε 09/10/2019 στις 18:56
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Έψαξα στην τεκμηρίωση της Google και δεν βρήκα τίποτα για Dart και Firestore Συλλογές. Αλλά μπορείτε να δοκιμάσετε μια λύση, από αυτό το τρίτο μέρος μπορείτε να βρείτε έναν τρόπο να χρησιμοποιήσουν Node.js με Dart. Επιπλέον, μπορείτε να ακολουθήσετε του υπαλλήλου της Google τεκμηρίωση για να πάρετε τα δεδομένα σας χρησιμοποιώντας Node.js.

Απαντήθηκε 10/10/2019 στις 18:31
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more