颤振错误:超类没有名为 'initState' 的方法



我正在尝试使用以下教程在Flutter中实现一个视频呼叫应用程序https://www.100ms.live/blog/flutter-webrtc#rendering-本地用户。

然而,当我运行时,我会得到以下错误

lib/main.dart(59,11(:错误GE5905412:超类没有名为"initState"的方法。[D:---\webrtc_flutter\build\windows\flutter_assemble.vcxproj]

lib/main.dart(65,11(:错误GE5905412:超类没有名为"dispose"的方法。[D:---\webrtc_flutter\build\windows\flutter_assemble.vcxproj]

以下是编写的代码:

class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final _localVideoRenderer =  RTCVideoRenderer();
void initRenderers() async {
await _localVideoRenderer.initialize();
}
_getUserMedia() async {
final Map<String, dynamic> mediaConstraints = {
'audio': true,
'video': {
'facingMode': 'user',
}
};
MediaStream stream =
await navigator.mediaDevices.getUserMedia(mediaConstraints);
_localVideoRenderer.srcObject = stream;
}
@override
void initState() {
initRenderers();
_getUserMedia();
super.initState();
}
@override
void dispose() async {
await _localVideoRenderer.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(this.title),
),
body: Stack(
children: [
Positioned(
top: 0.0,
right: 0.0,
left: 0.0,
bottom: 0.0,
child: RTCVideoView(_localVideoRenderer))
],
),
);
}

final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}

函数"initState"处置";以及";构建";应该在你班上&quot_"我的主页状态";不在";"我的主页";因为这些函数是在State类中实现的,而不是StatefulWidget类。

更改代码

StatefulWidget的结构无效。

CCD_ 2和CCD_。

State是一个状态类,用于管理StatefulWidget的生命周期和状态

class Home extends StatefulWidget {
const Home({Key? key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final _localVideoRenderer =  RTCVideoRenderer();
void initRenderers() async {
await _localVideoRenderer.initialize();
}
_getUserMedia() async {
final Map<String, dynamic> mediaConstraints = {
'audio': true,
'video': {
'facingMode': 'user',
}
};
MediaStream stream =
await navigator.mediaDevices.getUserMedia(mediaConstraints);
_localVideoRenderer.srcObject = stream;
}
@override
void initState() {
initRenderers();
_getUserMedia();
super.initState();
}
@override
void dispose() async {
await _localVideoRenderer.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(this.title),
),
body: Stack(
children: [
Positioned(
top: 0.0,
right: 0.0,
left: 0.0,
bottom: 0.0,
child: RTCVideoView(_localVideoRenderer))
],
),
);
}
}

最新更新