Перенаправление с помощью gesturedetector на определенное отклонение профиля

#firebase #flutter

#firebase #flutter

Вопрос:

Я создаю страницу поиска, и я не знаю, как я могу управлять для пользователя, когда они находят имя, которое существует, чтобы иметь возможность прикоснуться к нему и перенаправляться на эту конкретную страницу профиля пользователя, который они нашли. Вот мой код:

 import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flappy_search_bar/flappy_search_bar.dart';
import 'package:flutter/material.dart';
import 'UserProfiles.dart';
import 'viewProfiles.dart';

class Searchbar extends StatefulWidget {
  @override
  SearchBarState createState() => SearchBarState();
}

class SearchBarState extends State<Searchbar> {
  TextEditingController textEditingController = TextEditingController();
  final database = Firestore.instance;
  String searchString;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        body: Container(
            child: Column(
          children: <Widget>[
            Padding(
              padding: EdgeInsets.only(top: 20, right: 280),
              child: IconButton(
                icon: Icon(Icons.arrow_back),
                iconSize: 30.0,
                color: Colors.black,
                onPressed: () => Navigator.pop(context),
              ),
            ),
            TopText(),
            Expanded(
              child: Column(
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.only(
                        top: 40.0, left: 20.0, right: 20.0),
                    child: Container(
                      child: TextField(
                        onChanged: (val) {
                          setState(() {
                            searchString = val.toLowerCase();
                          });
                        },
                        controller: textEditingController,
                        decoration: InputDecoration(
                            suffixIcon: IconButton(
                                icon: Icon(Icons.clear),
                                onPressed: () => textEditingController.clear()),
                            hintText: " Search company name here ",
                            hintStyle: TextStyle(
                                fontFamily: 'Helvetica',
                                color: Colors.blueGrey)),
                      ),
                    ),
                  ),
                  Expanded(
                      child: StreamBuilder<QuerySnapshot>(
                    stream: (searchString == null || searchString.trim() == '')
                        ? Firestore.instance.collection('Users').snapshots()
                        : Firestore.instance
                            .collection('Users')
                            .where('name', isEqualTo: searchString)
                            .snapshots(),
                    builder: (context, snapshot) {
                      if (snapshot.hasError) {
                        return Text('We got an error ${snapshot.error}');
                      }
                      switch (snapshot.connectionState) {
                        case ConnectionState.waiting:
                          return SizedBox(
                            child: Center(
                              child: CircularProgressIndicator(),
                            ),
                          );
                        case ConnectionState.none:
                          return Text('Oops no data present');

                        case ConnectionState.done:
                          return Text('We are done');

                        default:
                          return new ListView(
                              children: snapshot.data.documents
                                  .map((DocumentSnapshot document) {
                            return new ListTile(
                              title: Text(document.data['name']),
                            );
                          }).toList());
                      }
                    },
                  )),
                ],
              ),
            )
          ],
        )));
  }
}

class TopText extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Padding(
        padding: EdgeInsets.only(top: 40, left: 20, right: 20),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Text(
                  "Hey there,n we can help you find👀 ",
                  style: TextStyle(
                      fontWeight: FontWeight.bold,
                      fontFamily: 'Helvetica',
                      fontSize: 24),
                ),
              ],
            )
          ],
        ));
  }
}
  

И вот то, что я использовал раньше

  return GestureDetector(
                                onTap: () {
//                                  Navigator.push(context, new MaterialPageRoute(builder: (_)=>ViewUserPage()));
                                  Navigator.push(
                                      context,
                                      new MaterialPageRoute(
                                          builder: (_) => StoryProfiles(
                                              UserProfiles(
                                                  '${snapshot.data.documents[index].data['id']}',
                                                  snaps.data['name'],
                                                  snaps.data['avatarUrl'],
                                                  snaps.data['address'],
                                                  snapshot.data.documents[index]
                                                      .data['categoryName']))));
                                },
  

но я не знаю, как я могу добавить его сюда..