Как обратиться к переменной на сервере Firebase, которая принадлежит определенному документу? - PullRequest
0 голосов
/ 03 февраля 2020

Справочная информация: я пишу приложение, в котором вы можете хранить плюсы и пятерки класса.

Я делаю это с Flutter и Firebase. Моя база данных Firestore называется «помощниками» и содержит несколько документов с уникальным автоматическим идентификатором. Каждый документ имеет три поля: имя (строка), точки (число), пятерки (число). Я сделал это с помощью этого урока: https://www.youtube.com/watch?v=DqJ_KjFzL9I&t=591s

Я хочу немного изменить GUI, в каждом списке я отображаю имя, кнопку для убывания точек , значение точек, кнопка для увеличения точек, кнопка для уменьшения пяти, значение пяти, кнопка для увеличения пяти и кнопка для установки значения пяти на ноль.

Мой вопрос был бы, что, как можно Я имею в виду поля (точки, пятерки) базы данных при изменении их значений?

class MyApp extends StatefulWidget {

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  Widget _buildListItem(BuildContext context, DocumentSnapshot document){
    return ListTile(
      title: Row(
        children: [
          Expanded(
              child: Text(
                document["Name"],
                style: Theme.of(context).textTheme.headline,
              )
          ),
          Container(
            decoration: const BoxDecoration(
              color: Color(0xffddddff)
            ),
            padding: const EdgeInsets.all(10.0),
            child: Text(
              document['Points'].toString(),
              style: Theme.of(context).textTheme.display1,
            ),
          ),
          Container(
              child: Row(
                  children: <Widget>[
                    IconButton(
                        icon: Icon(Icons.keyboard_arrow_left),
                        iconSize: 30,
                        onPressed: (){
                          setState(() {
                            if(points!=0) { //I mean here
                              points--; //I mean here
                            }
                          });
                        }
                    ),
                    Text(
                      "$points", //I mean here
                      style: TextStyle(
                          fontSize: 30
                      ),
                    ),
                    IconButton(
                        icon: Icon(Icons.keyboard_arrow_right),
                        iconSize: 30,
                        onPressed: (){
                          setState(() {
                            points++; //I mean here
                            if(points==10){ //I mean here
                              points=0; //I mean here
                              fives++; //I mean here
                            }
                          });
                        }
                    ),
                    Text(
                      "$fives", //I mean here
                      style: TextStyle(
                          fontSize: 30
                      ),
                    ),
                    IconButton(
                        icon: Icon(Icons.check_circle),
                        iconSize: 30,
                        onPressed: (){
                          setState(() {
                            fives=0; //I mean here
                          });
                        }
                    ),
                  ]
              )
          ),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Scaffold(
        appBar: AppBar(
        title: Text("Punkte++"),
          centerTitle: true,
        ),
        body: StreamBuilder(
          stream: Firestore.instance.collection("mates").snapshots(),
          builder: (context, snapshot) {
            if(!snapshot.hasData) return const Text("Loading...");
            return ListView.builder(
              itemExtent: 80.0,
              itemCount: snapshot.data.documents.length,
              itemBuilder: (context, index) =>
                _buildListItem(context, snapshot.data.documents[index]),
                );
              }
          ),
      )
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...