在我的代碼中,我嘗試使用 userID 從用戶表中提取年齡。資料庫的結構。

childPrivateDetails 是用戶表的子集合
**我想從這個表中獲取年齡如何做到這一點并在單擊下一步按鈕時傳遞應該將年齡傳遞給“void ageCa()”方法**
代碼
class _GuideLineScreenState extends State<GuideLineScreen> {
Future<void> getAge() async {
final sp = context.read<SignInProvider>();
Future<void> getAge() async {
final path = 'users/${sp.uid}/childPrivateDetails/${sp.uid}';
final reference = FirebaseFirestore.instance.doc(path);
final age = await reference.get().then((value) => value.get('age'));
print('age is: $age');
}
}
下一個按鈕代碼
SizedBox(
width: 160.0,
height: 35.0,
child: ElevatedButton(
style: ButtonStyle(
shape:
MaterialStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: const BorderSide(
color: Colors.blueAccent,
),
),
),
),
onPressed: () {
ageCa();
},
child: const Text(
'next',
style: TextStyle(
color: Colors.white,
),
),
),
),
無效 ageCa() 代碼
void ageCa() {
String age = age;
final data = age.split(",");
final List<int> numbers =
data.map((e) => int.parse(e.replaceAll(RegExp('[^0-9]'), ''))).toList();
//format "Years: 2, Months: 00, Days: 00"; only work on this format
Duration ageDuration =
Duration(days: numbers[0] * 365 numbers[1] * 30 numbers[2]);
if (ageDuration >= const Duration(days: 2 * 288)) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const LoginScreen()),
);
} else {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const HomeScreen(),
));
}
}
為此,我沒有使用模型路徑影像

控制臺中的用戶 ID

代碼

我添加了 print($age); 在小部件構建(BuildContext 背景關系){

無效年齡鈣()

uj5u.com熱心網友回復:
試試下面的代碼:
FutureBuilder<DocumentSnapshot<Map<String, dynamic>>>(
future: FirebaseFirestore.instance
.collection("users")
.doc(sp.uid)
.collection("childPrivateDetails")
.doc(sp.uid)
.get(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
}
return Text(snapshot.data.data()!["age"]);
},
),
uj5u.com熱心網友回復:
使用該get()方法獲取單個欄位,如下所示:
Future<void> getAge() async {
final uid = IZf3qxWtmxcWF6oXh1nbB8SK4az2
final path = 'users/$uid/childPrivateDetails/$uid';
final reference = FirebaseFirestore.instance.doc(path);
final age = await reference.get().then((value) => value.get('age'));
print('age is: $age');
}
uj5u.com熱心網友回復:
據我所知,firebase 檔案快照只是函式.data()而不是.data.data()您的錯誤突出顯示.data()不存在,這是因為.data之前.data()是函式而不是變數。我可能錯了,我不是一個快速的程式員。如果我錯了,請給我打電話,并且您的快照回傳類似于 variable的內容.data。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524832.html
