我正在使用Flutter,遇到了一个问题,“初始化器中只能访问静态成员”。
我想将字符串从一个类传递到另一类,这是我尝试传递的UID。我找到了一种方法来做,但是唯一有问题的是底部导航栏var页面列表。这是代码:
class MyStatefulWidget extends StatefulWidget {
MyStatefulWidget({Key key, this.uid}) : super(key: key);
final String uid;
@override
_ProfilePage createState() => _ProfilePage(uid);
}
class _ProfilePage extends State<MyStatefulWidget> {
final String uid;
_ProfilePage(this.uid);
@override
void initState() {
super.initState();
}
int i = 2;
var pages = [
new LearningRoom(),
new BrandRanking(),
new Profile(uid), //Error is here with this
new FabricCalculator(),
new LookBook()
];
请问有人可以提供一些解决此问题的帮助吗?我已经环顾了大约一个小时,却找不到任何有帮助的东西,我尝试将其转换为方法等。
谢谢, 布拉德
答案 0 :(得分:1)
尝试初始化 initState 方法
中的页面class _ProfilePage extends State<MyStatefulWidget> {
final String uid;
var pages;
_ProfilePage(this.uid);
@override
void initState() {
super.initState();
pages = [
new LearningRoom(),
new BrandRanking(),
new Profile(uid), //Error is here with this
new FabricCalculator(),
new LookBook()
];
}
答案 1 :(得分:1)
您需要将pages
的创建移到initState()
中。
也不要在_ProfilePage
中使用新变量。您可以使用uid
来访问widget.uid
:
class MyStatefulWidget extends StatefulWidget {
MyStatefulWidget({Key key, this.uid}) : super(key: key);
final String uid;
@override
_ProfilePage createState() => _ProfilePage(uid);
}
class _ProfilePage extends State<MyStatefulWidget> {
@override
void initState() {
int i = 2;
var pages = [
LearningRoom(),
BrandRanking(),
Profile(widget.uid),
FabricCalculator(),
LookBook()
];
super.initState();
}
注意:Dart 2不需要new
关键字