Home > Software design >  "'key' is required, but there's no corresponding argument" flutter error
"'key' is required, but there's no corresponding argument" flutter error

Time:12-14

How to solve this error?

The named parameter 'key' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

error

enter image description here

Future<void> onJoin() async {
    // update input validation
    setState(() {
      _channelController.text.isEmpty
          ? _validateError = true
          : _validateError = false;
    });
    if (_channelController.text.isNotEmpty) {
      await _handleCameraAndMic(Permission.camera);
      await _handleCameraAndMic(Permission.microphone);
      await Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => VideoCall(
            channelName: _channelController.text,
            role: _role,
          ),
        ),
      );
    }
  }

class VideoCall

class VideoCall extends StatefulWidget {
  final String channelName;
  final ClientRole role;
  const VideoCall({Key key, required this.channelName, required this.role})
      : super(key: key);

  @override
  _VideoCallState createState() => _VideoCallState();
}

class _VideoCallState extends State<VideoCall> {
  final _users = <int>[];
  final _infoStrings = <String>[];
  bool muted = false;
  late RtcEngine _engine;

  @override
  void dispose() {
    // clear users
    _users.clear();
    // destroy sdk
    _engine.leaveChannel();
    _engine.destroy();
    super.dispose();
  }

  @override
  void initState() {
    super.initState();
    // initialize agora sdk
    initialize();
  }

this is the videoCall class in there no any error shows.

when add "key" show this enter image description here

When remove required property from key in video call class

enter image description here

show this error

CodePudding user response:

In VideoCall class, key property set as a required, change it to optional:

class VideoCall extends StatefulWidget {
  final String? channelName;
  final ClientRole? role;
  const VideoCall({Key? key, this.channelName, this.role})
      : super(key: key);

  @override
  _VideoCallState createState() => _VideoCallState();
}
  • Related