flutter 没有为类型“_HomeState”定义方法“UserUid”

ycl3bljg  于 2023-01-14  发布在  Flutter
关注(0)|答案(1)|浏览(139)

我正在开发一个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(),
         ]
         ),
       ),
     ),
   );
 }
}
vmdwslir

vmdwslir1#

如果你想在你的state类中访问你的StatefulWidget类中的东西,你需要像这样使用widget.

Text(
   getEmoji(data)+data,
   style: TextStyle(fontSize: 25, color: Colors.green),
),
widget.UserUid(), // <=== change this
OutButton(),

相关问题