Flutter 在初始化器错误中只能访问静态成员
您好,我正在尝试将信息从构造函数传递到小部件中 但它返回错误: '在初始值设定项中只能访问静态成员' 此行返回错误:Flutter 在初始化器错误中只能访问静态成员,flutter,dart,mobile,widget,flutter-layout,Flutter,Dart,Mobile,Widget,Flutter Layout,您好,我正在尝试将信息从构造函数传递到小部件中 但它返回错误: '在初始值设定项中只能访问静态成员' 此行返回错误: Upload(currentUsers: widget.currentUsers,), 求你了,我需要帮助 这是我的密码 import 'package:curved_navigation_bar/curved_navigation_bar.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutt
Upload(currentUsers: widget.currentUsers,),
求你了,我需要帮助
这是我的密码
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:junk_stores/Curved4/Notifications.dart';
import 'package:junk_stores/Curved4/Payments.dart';
import 'package:junk_stores/Curved4/profilePage.dart';
import 'dart:ui' as ui;
import 'package:junk_stores/Curved4/homeScreen.dart';
import 'package:junk_stores/Curved4/uploadPage.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:junk_stores/models/user.dart';
import 'package:junk_stores/pages/home.dart';
import 'package:junk_stores/pages/search.dart';
import 'package:junk_stores/pages/upload.dart';
class BottomNavbar extends StatefulWidget {
final User currentUsers;
BottomNavbar({@required this.currentUsers}){
print(currentUsers);
}
@override
_BottomNavbarState createState() => _BottomNavbarState();
}
class _BottomNavbarState extends State<BottomNavbar> {
int _currentIndex = 0;
final List<Widget> _children = [
HomeS(),
Search(),
Upload(currentUsers: widget.currentUsers,), // the error is here
Notifications(),//trending and notifications page
Profile(),
];
void onTappedBar (int index) {
setState(() {
_currentIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _children[_currentIndex],
bottomNavigationBar: CurvedNavigationBar(
color: Colors.white,
onTap : onTappedBar,
buttonBackgroundColor: Colors.white,
backgroundColor: Colors.purple[400],
animationCurve: Curves.ease,
animationDuration: Duration(milliseconds: 700),
index: 0,
height: MediaQuery.of(context).size.height * 0.07407407,//52 pixels
items: <Widget>[
ShaderMask(
blendMode: BlendMode.srcIn,
shaderCallback: (Rect bounds) {
return ui.Gradient.linear(
Offset(4.0, 24.0),
Offset(24.0, 4.0),
[
Colors.red[600],
Colors.purple,
],
);
},
child: Icon(
FontAwesomeIcons.home,
size: 24,
),
),
ShaderMask(
blendMode: BlendMode.srcIn,
shaderCallback: (Rect bounds) {
return ui.Gradient.linear(
Offset(4.0, 24.0),
Offset(24.0, 4.0),
[
Colors.red[600],
Colors.purple,
],
);
},
child: Icon(
FontAwesomeIcons.search,
size: 24,
),
),
ShaderMask(
blendMode: BlendMode.srcIn,
shaderCallback: (Rect bounds) {
return ui.Gradient.linear(
Offset(4.0, 24.0),
Offset(24.0, 4.0),
[
Colors.red[600],
Colors.purple,
],
);
},
child: Icon(
FontAwesomeIcons.plus,
size: 24,
),
),
ShaderMask(
blendMode: BlendMode.srcIn,
shaderCallback: (Rect bounds) {
return ui.Gradient.linear(
Offset(4.0, 24.0),
Offset(24.0, 4.0),
[
Colors.red[600],
Colors.purple,
],
);
},
child: Icon(
Icons.trending_up,
size: 29,
),
),
ShaderMask(
blendMode: BlendMode.srcIn,
shaderCallback: (Rect bounds) {
return ui.Gradient.linear(
Offset(4.0, 24.0),
Offset(24.0, 4.0),
[
Colors.red[600],
Colors.purple,
],
);
},
child: Icon(
FontAwesomeIcons.user,
size: 24,
)
)
],
),
);
}
}
我试图阅读其他解决方案,但我似乎不理解。我只想将构造函数中的信息传递给Upload小部件
这是我上传代码的顶部
class Upload extends StatefulWidget {
final User currentUsers;
Upload({@required this.currentUsers}){
print(currentUsers);
}
@override
_UploadState createState() => _UploadState();
}
class _UploadState extends State<Upload> {
buildSplashSreen(){
return Scaffold(
appBar: AppBar(
试着这样做:
MyWidgetcurrentUsers:someuser;
类MyWidget扩展了StatefulWidget{
最终用户当前用户;
constmywidget{Key Key,this.currentUsers}:superkey:Key;
@凌驾
_MyWidgetState createState=>\u MyWidgetStatethis.currentUsers;
}
类_MyWidgetState扩展状态{
最终用户当前用户;
_MyWidgetStatethis.currentUsers;
@凌驾
小部件构建上下文上下文{
返回容器
;
}
}
在initstate之前,您无法访问widgetwidget.currentUsers 诸如此类:
class _BottomNavbarState extends State<BottomNavbar> {
int _currentIndex = 0;
List<Widget> _children;
@override
initState() {
_children = [
HomeS(),
Search(),
Upload(currentUsers: widget.currentUsers,),
Notifications(),
Profile(),
]
}
...
}
或者像getter那样做
List<Widget> get _children => [
HomeS(),
Search(),
Upload(currentUsers: widget.currentUsers,),
Notifications(),
Profile(),
];
你能发布上传代码吗?好的。。。。。。。。。嘿,MB,我真的不知道如何在我的代码中实现这一点。。你能用我的例子吗Hey axot。。我两个都试过了,但都不管用。。。当我将列表置于init状态时,我无法访问代码其余部分中需要itI的_子项。我在变量声明之前的final word中犯了一个错误。我编辑了它。您是否留下变量列表的声明\u子项;在初始化状态之前?