我正在开发一个Flutter移动的应用。我正在使用Firebase进行身份验证,但是我遇到了一个问题。我想添加一个注销按钮,但是我遇到了这个错误,我该如何解决它?我需要帮助。UserUid(),输出按钮(),这两个地方都出错了,想在Firebase的帮助下,取当前用户,用signOut方法注销,但是我想把它添加到方法中的一个按钮上,并把它作为一个小部件添加,但是我无法解决这个错误。
错误:没有为类型“_HomeState”定义方法“UserUid”。错误:没有为类型“_HomeState”定义方法“OutButton”。
我认为这是因为我使用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(),
]
),
),
),
);
}
}
1条答案
按热度按时间vmdwslir1#
如果你想在你的
state
类中访问你的StatefulWidget
类中的东西,你需要像这样使用widget.
: