다른 페이지에서 가져와 생성자에 공급되는 값을 사용하고 싶습니다. 나는 시도했지만 only static member can be accessed in initializers
. 누구든지 다른 페이지에서 가져온 변수를 어떻게 사용할 수 있는지 알려주십시오. 또는 firebase에서 사용자 전화 번호와 같은 세부 정보를 가져와 globalNumber에 할당 할 수있는 방법이 있는지 알려주세요. This is my code. 변수 이름은 globalNumber입니다.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
var globalNumber;
bool valueExist;
class Pricepage extends StatefulWidget {
@override
_PricepageState createState() => _PricepageState();
}
class _PricepageState extends State<Pricepage> {
var globalNumber;
_PricepageState({this.globalNumber});
StreamSubscription<DocumentSnapshot> subscription;
final DocumentReference documentReference =
Firestore.instance.document("users/$globalNumber"); // (Here this value comes from the previous page this is just the phonenumber of the user from firebase auth)
@override
void initState() {
// TODO: implement initState
super.initState();
subscription = documentReference.snapshots().listen((datasnapshot) {
if (datasnapshot.data.containsValue("true")) {
setState(() {
valueExist = true;
});
}
else {
setState(() {
valueExist = false;
});
}
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: getPrice(),
),
);
}
Widget getPrice() {
try {
if (valueExist) {
return Text('Prices are visibile');
}
else {
return Text('Verify first');
}
}
catch (e) {
print(e);
}
}
}
답변 2.0
주요 문제는 다음 라인에 있습니다.
final DocumentReference documentReference =
Firestore.instance.document("users/$globalNumber");
당신은 당신의 초기화 안
final variable
외부를initState()
. 내부initState()
에서만 해야합니다 . 이것이이 오류가 발생하는 이유입니다. 오류에서와 같이 이니셜 라이저에서 정적 멤버 만 액세스 할 수 있다고 말합니다 . 그리고 귀하의static
멤버는documentReference
내부에서 초기화되어야initializers
합니다.initState()
이것은 작동합니다
class _PricepageState extends State<Pricepage> {
var globalNumber;
_PricepageState({this.globalNumber});
StreamSubscription<DocumentSnapshot> subscription;
final DocumentReference documentReference;
@override
void initState() {
// TODO: implement initState
super.initState();
// initialise the value here
documentReference = Firestore.instance.document("users/$globalNumber"); // (Here this value comes from the previous page this is just the phonenumber of the user from firebase auth)
subscription = documentReference.snapshots().listen((datasnapshot) {
if (datasnapshot.data.containsValue("true")) {
setState(() {
valueExist = true;
});
}
else {
setState(() {
valueExist = false;
});
}
});
}
}
나머지 코드는 동일하게 유지됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다