构造函数名称和未定义的类无效



我试图在下面的代码中在 ClassTwo 中创建 ClassOne 的实例,但是我Invalid constructor nameUndefined class 'instOne .person错误我如何以正确的方式执行此操作

class ClassOne extends StatefulWidget {    
@override
ClassOneState createState() =>  ClassOneClassState();
}
class ClassOneState extends State<ClassOneClass> {
var person= 'myname';
hey(){
print('hey hello');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView(
children: <Widget>[
],
),
);
}
}}
// the file is in main.dart
import 'package:cloud_fs_demo/main.dart' ;
class ClassTwo extends StatefulWidget {    
@override
ClassTwoState createState() =>  ClassTwoClassState();
}
class ClassTwoState extends State<ClassTwoClass> {
ClassOne instOne = ClassOne();
//Undefined class 'instOne .person'
instOne .person;
//error:Invalid constructor name
instOne .hey() ;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView(
children: <Widget>[
],
),
);
}
}}

您可以在ClassTwo中创建ClassOne实例,因为您正在定义一个字段,但请考虑一下:此代码何时执行?instOne.person;.现在要解决问题,您必须在构造函数或小部件的 initstate 中执行此代码,以及它们之间的区别,即首先执行构造函数方法。

在构造函数中

var instone= ClassOne();
_ClassTwoState(){
instone.person="test";
}

在小部件的初始化状态中

@override
void initState() {
instone.person="test";
super.initState();
}

此外,您还必须声明您将在其中使用的字段和函数ClassTwo而不是ClassTwoState

class ClassOne extends StatefulWidget {
var person= 'myname';
hey(){
print('hey hello');
}
@override
ClassOneState createState() =>  ClassOneState();
}

完整示例

相关内容

  • 没有找到相关文章

最新更新