問題点
サインアップ時にfirebaseでuidをdocumentIDとして保存し、ログインしたユーザーのuidを用いてデータを取得したい。
currentUserなどを使ってuidを取得し、検索に用いたいのですが、うまくいきませんでした。
ご教授お願いいたします。
dart
1 2class TimerModel extends ChangeNotifier{ 3 4 List<Time> timeList = []; 5 String Uid = ''; 6 7 Future getUid(){ 8 final snapshot = FirebaseAuth.instance.currentUser; 9 this.Uid = snapshot.uid; 10 } 11 12 Future gettimerList() async { 13 14 final snapshot = 15 await FirebaseFirestore 16 .instance 17 .collection('users') 18 .doc(Uid) 19 .collection('timer') 20 .get(); 21 final docs = snapshot.docs; 22 final timeList = docs.map((doc) => Time(doc)).toList(); 23 this.timeList = timeList; 24 25 notifyListeners(); 26 27 } 28 29 Future getTeaListRealtime() async { 30 31 final snapshots = 32 await FirebaseFirestore 33 .instance 34 .collection('users') 35 .doc(Uid) 36 .collection('timer') 37 .snapshots(); 38 snapshots.listen((snapshot){ 39 final docs = snapshot.docs; 40 final timeList = docs.map((doc) => Time(doc)).toList(); 41 this.timeList = timeList; 42 notifyListeners(); 43 }); 44 } 45}
dart
1class TimerList extends StatelessWidget { 2 3 Widget build(BuildContext context) { 4 5 return Consumer<TimerModel>(builder: (context, model, child) { 6 model.getUid(); 7 return Scaffold( 8 appBar: AppBar( 9 title: Text('タイマーリスト'), 10 centerTitle: true, 11 actions: [ 12 InkWell( 13 onTap: ()async{ 14 print(model.Uid); ※ここでuidを出力できました。 15 }, 16 child: Icon(Icons.favorite_border, 17 ), 18 ) 19 ], 20 ), 21 body:Consumer<TimerModel>(builder: (context, model, child) { 22 final timerList = model.timeList; 23 return ListView( 24 children: timerList 25 .map( 26 (timelist) => Card( 27 child: Center( 28 child:Text(timelist.title, 29 ), 30 ), 31 ), 32 ).toList(), 33 ); 34 }), 35 ); 36 } 37 ); 38 } 39}
dart
1class Time { 2 3 Time(DocumentSnapshot doc){ 4 this.time = doc['time']; 5 this.title = doc['title']; 6 } 7 String time; 8 String title; 9}
回答1件
あなたの回答
tips
プレビュー