У меня есть две кнопки, где, если поле существует, оно показывает одну кнопку, иначе это показывает пользователя другого, в котором я дам функцию для добавления данных в мою базу данных ... я использую облако firebase ... как можно проверить, существует поле или нет ... ниже мой код ...
// если счет не существует, будет показана поднятая кнопка, чтобы вы могли нажать на нее до
// код:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
BuildContext buildContext;
int filter = 0;
StreamSubscription<DocumentSnapshot> subscription;
class ScorePage extends StatelessWidget {
final int score;
ScorePage({Key key, @required this.score}) : super(key: key);
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: new Text('Scroe Card'),
),
body: new Center(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new Padding(padding: EdgeInsets.all(30.0)),
new MaterialButton(
color: Colors.red,
onPressed: () {},
child: new Text(
"Reset Quiz",
),
),
new Flexible(
child: StreamBuilder(
stream: Firestore.instance.collection('quiz score').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return new Text("loading..");
} else {
return FirestoreListView1(
documents: snapshot.data.documents,
);
}
},
))
])));
}
}
class FirestoreListView1 extends StatefulWidget {
final List<DocumentSnapshot> documents;
FirestoreListView1({this.documents});
@override
FirestoreListView1State createState() {
return new FirestoreListView1State();
}
}
class FirestoreListView1State extends State<FirestoreListView1> {
@override
Widget build(BuildContext context1) {
return ListView.builder(
itemCount: widget.documents.length,
padding: new EdgeInsets.all(1.0),
itemBuilder: (BuildContext context1, int index) {
int scoren = widget.documents[index].data['score1'];
if () {
return new RaisedButton(
child: new Text("Submit Your Score",
style: new TextStyle(
fontSize: 20.0,
color: Colors.white,
fontFamily: "ChelaOne-Regular")),
onPressed: (){
},
);
} else {
return new RaisedButton(
color: Colors.red,
child: new Text("no scores found"),
onPressed: (){
},
);
}
});
}
}