首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法'initState‘不是在'ChatRoom’的超类中定义的

方法'initState‘不是在'ChatRoom’的超类中定义的
EN

Stack Overflow用户
提问于 2022-03-22 13:49:21
回答 2查看 1.9K关注 0票数 0

我正在创建一个聊天使用颤音+火焰基地。当我点击“麦克风”图标时,我想记录音频。但我的代码中有这些错误。消息发送已经开始工作了。现在我想发送语音信息并将它们存储在firebase中。我参考这段视频作为实现。供您参考,您可以找到我的完整代码文件。语音记录代码被突出显示。>> methods.dartchatRoom.dartserach.dart。我想我把代码放错了。把你的体重加在这上面。

“initState”方法不是在“聊天室”的超类中定义的。方法'dispose‘不是在'ChatRoom’的超类中定义的,'setState‘方法不是为’聊天室‘类型定义的。

chatRoom.dart

代码语言:javascript
复制
     bool show = false;
      FocusNode forcusNode = FocusNode();
      **final recorder = SoundRecorder();
    
      @override
      void initState(){
        super.initState();
        recorder.init();
      }
    
      @override
      void dispose(){
        super.dispose();
        recorder.dispose();
      }**
    
      @override
      Widget build(BuildContext context) {
        final size = MediaQuery.of(context).size;
    
    
        **final isRecording = recorder.isRecording;
        final icon = isRecording ? Icons.stop: Icons.mic;
        final text = isRecording? 'STOP': 'START';
        final primary= isRecording? Colors.red : Colors.white;
        final onPrimary = isRecording ? Colors.white : Colors.black;**
    
    
        return Scaffold(
          resizeToAvoidBottomInset: false,
          appBar: AppBar(
            title: StreamBuilder<DocumentSnapshot<Map<String ,dynamic>>>(
              stream: _firestore.collection('Users').doc(userMap['uid']).snapshots(),
              builder:(context ,snapshot){
               // print(snapshot.data!['name']);
                if(snapshot.data!.exists){
                  // print(snapshot.data!['status']);
                  return Container(
                    child: Column(
                      children: [
                             Text(userMap['name']),
                            // Text(snapshot.data!['status']),
                      ],
                    ),
                  );
                  }else{
                    return Container(child: Text(userMap['name']),);
                  }
                
                
              } ,)
            
           
          ),
          body: SingleChildScrollView(
            child: Column(children: [
              Container(
                  height: size.height / 1.25,
                  width: size.width,
                  child: StreamBuilder<QuerySnapshot>(
                    stream: _firestore
                        .collection('chatroom')
                        .doc(ChatRoomID)
                        .collection('chats')
                        .orderBy("time", descending: false)
                        .snapshots(),
                    builder: ((BuildContext context,
                        AsyncSnapshot<QuerySnapshot> snapshot) {
                      if (snapshot.data != null) {
                        return ListView.builder(
                            itemCount: snapshot.data!.docs.length,
                            itemBuilder: (context, index) {
                              Map<String, dynamic>? map = snapshot.data!.docs[index]
                                  .data() as Map<String, dynamic>?;
                              return message(size, map!);
                            });
                      }
                      return Container();
                    }),
                  )),
              Container(
                height: size.height / 10,
                width: size.width,
                alignment: Alignment.center,
                child: Center(
                  child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceAround,
                      children: [
                        Padding(
                          padding: const EdgeInsets.all(5.0),
                          child: SizedBox(
                            height: size.height / 10,
                            width: size.width / 1.5,
                            child: Card(
                              margin: EdgeInsets.only(left: 2, right: 2, bottom: 8),
                              shape: RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(25)),
                              child: TextField(
                                focusNode: forcusNode,
                                controller: _message,
                                keyboardType: TextInputType.multiline,
                                maxLines: 5,
                                minLines: 1,
                                textAlignVertical: TextAlignVertical.center,
                                decoration: InputDecoration(
                                  border: InputBorder.none,
                                  prefixIcon: IconButton(
                                      onPressed: () {
                                        forcusNode.unfocus();
                                        forcusNode.canRequestFocus = false;
                                        show = !show;
                                      },
                                      icon: Icon(
                                        Icons.emoji_emotions,
                                        color: textGrey,
                                      )),
                                  suffixIcon: Row(
                                      mainAxisSize: MainAxisSize.min,
                                      children: [
                                        IconButton(
                                            onPressed: () {
                                              getImage();
                                            },
                                            icon: Icon(
                                              Icons.attach_file,
                                              color: textGrey,
                                            )),
                                        IconButton(
                                            onPressed: () {},
                                            icon: Icon(
                                              Icons.camera_alt,
                                              color: textGrey,
                                            )),
    
                                      ]),
                                  hintText: 'Type Message',
                                ),
                              ),
                            ),
                          ),
                        ),
    
                        **IconButton(
                              onPressed: () async{
                               final isRecording = await recorder.toggleRecording();
                               setState((){});
                              },
                              icon: Icon(
                                Icons.mic,
                                color: mainGreen,
                              )),**
    
                        IconButton(
                            onPressed: () {
                              onSendMessage();
                              print(_message.text);
                            },
                            icon: Icon(
                              Icons.send,
                              color: mainGreen,
                            )),
    
    
                      ]),
                ),
              ),
            ]),
          ),
        );
      }

  @override
  void dispose(){
    super.dispose();
    recorder.dispose();
  }

IconButton(
                          onPressed: () async{
                           final isRecording = await recorder.toggleRecording();
                           setState((){});
                          },
                          icon: Icon(
                            Icons.mic,
                            color: mainGreen,
                          )),
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-22 13:52:06

您确定您的ChatRoom组件是StatefulWidget吗?

票数 5
EN

Stack Overflow用户

发布于 2022-03-22 14:02:31

因为ChatRoom是一个StatelessWidget,所以它不能访问initState方法,因为没有要初始化的状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71573213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档