один документ в той же коллекции - PullRequest
0 голосов
/ 16 марта 2020

Я создаю приложение для викторины и использую Firestore для данных, мне нужен код для этого: когда пользователь выбирает ответ 1, он переходит на страницу A, но когда он выбирает ответ 2, он переходит на страницу B ... et c

Это где я: все ответы go на той же странице, когда я нажимаю на нее, я хочу, чтобы у каждого ответа была своя страница

enter image description here

Это мой код:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class question14 extends StatefulWidget {
  @override
  _question14State createState() => _question14State();
}

class _question14State extends State<question14> {
  int selectedIndex 

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: StreamBuilder(
            stream: Firestore.instance.collection('numberzz').snapshots(),
            builder: (context, snapshot) {
              if (!snapshot.hasData) return const Text('Loading ...');
              return ListView.builder(

                scrollDirection: Axis.horizontal,
                padding: EdgeInsets.fromLTRB(100.0, 0.0, 0.0, 0.0),
                itemExtent: 200.0,
                itemCount: snapshot.data.documents.length,
                itemBuilder: (BuildContext context, int index) {
                  final DocumentSnapshot document =
                      snapshot.data.documents[index];

                  return Container(
                    padding: EdgeInsets.fromLTRB(0.0, 300.0, 0.0, 450.0),
                    child: ListTile(
                      contentPadding: selectedIndex == index
                          ? EdgeInsets.all(0.0)
                          : EdgeInsets.all(25.0),
                      title: Image.network(
                        document['number'],
                      ),
                      selected: selectedIndex == index,
                      onTap: () {
                        Firestore.instance.runTransaction((transaction) async {
                          DocumentSnapshot freshSnap =
                              await transaction.get(document.reference);
                          await transaction.update(freshSnap.reference, {
                            'vote': freshSnap['vote'] + 1,
                          });
                        });
                        Navigator.push(
                                context, MaterialPageRoute(
                                builder: (context) => new page()));

                        setState(() {
                          selectedIndex = index;
                        });
                      },
                    ),
                  );
                },
              );
            }));
  }
}

спасибо за вашу помощь!

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете проверить, какой индекс выбран перед навигацией. Вид условной навигации.

switch(selectedIndex){
 case 0:
   Navigator.of(context).push(.....(Page A));
   break;
 case 1:
  .......
  break; 

Думаю, вы поняли. Но этот код должен идти после

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