[英]How to get a document's ID from Firestore document Flutter
這是我的代碼,幾天來一直試圖弄清楚,我基本上想在不知道它是什么的情況下獲得特定文檔的 ID。 當我將文檔 ID 復制並粘貼到我的代碼中時,它可以工作並且我的數據會更新,但是當我不知道文檔的 ID 時該怎么辦。 請幫助:編碼新手:)
我嘗試了各種方法,但 firebase 文檔令人困惑,遺憾的是不包括 Flutter 文檔。
enum DegreeType { undergraduate, undergraduateintegrated, masters }
DocumentReference docRef = Firestore.instance.collection('User').document();
class FirestoreID {
String myId = docRef.documentID;
FirestoreID({this.myId});
}
class SelectDegreeTypeScreen extends StatefulWidget {
static const String id = 'selectdegreetypescreen';
@override
_SelectDegreeTypeScreenState createState() => _SelectDegreeTypeScreenState();
}
class _SelectDegreeTypeScreenState extends State<SelectDegreeTypeScreen> {
DegreeType degreeType = DegreeType.undergraduate;
final _auth = FirebaseAuth.instance;
final _firestore = Firestore.instance;
FirebaseUser loggedInUser;
FirestoreID id;
@override
void initState() {
super.initState();
getCurrentUser();
}
void getCurrentUser() async {
try {
final user = await _auth.currentUser();
if (user != null) {
loggedInUser = user;
String uid = user.uid;
print(loggedInUser.email);
print(loggedInUser.uid);
}
} catch (e) {
print(e);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Padding(
padding: EdgeInsets.only(left: 20.0, right:20, bottom: 50),
child: Column(
children: <Widget>[
TopBarBackArrow(),
LinearPercentIndicator(
width: MediaQuery.of(context).size.width - 50,
animation: true,
lineHeight: 15.0,
animationDuration: 1000,
percent: 0.16,
linearStrokeCap: LinearStrokeCap.roundAll,
progressColor: Color(0xFF77a3cc),
),
Padding(
padding: EdgeInsets.only(top:20.0),
child: Text(
'Select your degree type.',
style: kAppText,
),
),
Expanded(
child:ListView(
physics: NeverScrollableScrollPhysics(),
children: <Widget>[
ListTile(
title: const Text('Undergraduate', style: kAppTextsmallest,),
leading: Radio(
activeColor: Color(0xFF77a3cc),
value: DegreeType.undergraduate,
groupValue: degreeType,
onChanged: (DegreeType value) {
setState(() {
degreeType = value;
_firestore.collection('User').document(id.myId).updateData({'degree_type': 'undergrad'});
});
},
),
),
ListTile(
title: const Text('Undergraduate with Integrated Masters', style: kAppTextsmallest),
leading: Radio(
activeColor: Color(0xFF77a3cc),
value: DegreeType.undergraduateintegrated,
groupValue: degreeType,
onChanged: (DegreeType value) {
setState(() {
degreeType = value;
_firestore.collection('User').document(id.myId).updateData({'degree_type': 'integrated'});
});
},
),
),
ListTile(
title: const Text('Masters', style: kAppTextsmallest),
leading: Radio(
activeColor: Color(0xFF77a3cc),
value: DegreeType.masters,
groupValue: degreeType,
onChanged: (DegreeType value) {
setState(() {
degreeType = value;
_firestore.collection('User').document(id.myId).updateData({'degree_type': 'masters'});
});
},
),
),
],
),
),
ReusableButton(
title: 'Next',
colour: Color(0xff77a3cc),
onPressed:() {
Navigator.pushNamed(context, SelectedDegreeYears.id);
},
),
],
),
),
);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.