我正在开发一个Flutter移动应用程序。我正在使用Firebase进行身份验证,但我有一个问题。我想添加一个退出按钮,但是我遇到了这个错误,我该如何解决?我需要帮助。UserUid(), OutButton(),我在这两个地方得到错误。在Firebase的帮助下,我想使用signOut方法获取当前用户并注销,但我想将其添加到方法中的按钮并将其作为小部件添加,但我无法解决这个错误。
错误:'UserUid'方法没有为' _homeestate '类型定义。错误:'OutButton'方法没有为' _homeestate '类型定义。
我认为这是因为我使用statefull小部件,但我必须使用statefull,我绝对需要添加一个退出按钮到这个页面。
class Home extends StatefulWidget {
static String routeName="/home";
Home({Key? key}) : super(key: key);
final User? user = Auth().currentUser;
Future<void> signOut() async {
await Auth().signOut();
}
Widget Title_() {
return const Text('Firebase Auth');
}
Widget UserUid() {
return Text(user?.email ?? 'User email');
}
Widget OutButton() {
return ElevatedButton(
onPressed: signOut,
child: const Text('Sign Out'),
);
}
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
String getEmoji(String text) {
if (text == "anger") {
return '😠️ 💢';
} else if (text == "joy") {
return "😂 😭 🤣";
} else if (text == "sadness") {
return "😥 😔 😓";
} else if (text == "fear") {
return "😨 😱";
} else if (text == "love") {
return "❤ 💕 🥰";
} else if (text == "surprise") {
return "😯 😮 😲";
} else {
return "❓";
}
}
String url = '';
var data='';
String output = 'Initial Output';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Emoji Suggester')),
body: Center(
child: Container(
padding: EdgeInsets.all(20),
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
TextField(
onChanged: (value) {
url = 'http://10.0.2.2:5000/emotions?text=' + value;
},
),
TextButton(
onPressed: () async {
data = await fetchdata(url);
setState(() {
output = data;
});
},
child: Text(
'Emotions Suggester',
style: TextStyle(fontSize: 20),
)),
Text(
getEmoji(data)+data,
style: TextStyle(fontSize: 25, color: Colors.green),
),
UserUid(),
OutButton(),
]
),
),
),
);
}
}
如果您想在state
类中访问StatefulWidget
类中的内容,则需要像这样使用widget.
:
Text(
getEmoji(data)+data,
style: TextStyle(fontSize: 25, color: Colors.green),
),
widget.UserUid(), // <=== change this
OutButton(),