【发布时间】:2020-12-05 06:11:01
【问题描述】:
这是我的代码,几天来一直试图弄清楚它,我基本上想在不知道它是什么的情况下获取特定文档的 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);
},
),
],
),
),
);
}
}
【问题讨论】:
-
如果您帮助他人找出问题所在,您可能会得到更多答案。上面的代码中与您的问题相关的代码行在哪里?你尝试了什么?你遇到了什么错误?
标签: firebase flutter firebase-authentication document