gpt4 book ai didi

flutter - 跨多个窗口小部件传递Firebase用户Flutter

转载 作者:行者123 更新时间:2023-12-03 04:14:09 24 4
gpt4 key购买 nike

登录到我的应用程序后,我可以像这样将用户传递到我的Home小部件。

Future checkAuth(BuildContext context) async {
FirebaseUser user = await _auth.currentUser();
if (user != null) {
print("Already singed-in with ${user.email}");
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => Home(user)));
}
}

在首页小部件中,我采用这样的参数
编辑如果我在Build中移动了自己的 tabs,那就行不通了。也许是因为我使用底部导航?
class Home extends StatefulWidget {
final FirebaseUser user;
Home(this.user, {Key key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
int _currentIndex = 0;

final tabs = [
Container(
child: FirestoreSlideshow(),
),
Container(
child: ProfilePage(widget.user), //Got an error on this line
)
];

@override
Widget build(BuildContext context) {
return Scaffold(
body: tabs[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
selectedFontSize: 15,
items: [
BottomNavigationBarItem(
icon: Icon(
Icons.home,
size: 28.0,
),
title: Text('Home')),
BottomNavigationBarItem(
icon: Icon(
Icons.account_circle,
size: 28.0,
),
title: Text('Profile'),
),
],
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
),
);
}
}

在ProfilePage小部件中,我就像在Home中一样接受参数
class ProfilePage extends StatefulWidget {
final FirebaseUser user;
ProfilePage(this.user, {Key key}) : super(key: key);
@override
_ProfilePage createState() => _ProfilePage();
}

但我不断收到这个错误
Only static members can be accessed in initializers.

我尝试解决了一段时间,但似乎没有任何帖子可以回答我的问题。
我怎样才能解决这个问题?提前致谢。

最佳答案

您必须在初始状态下使用widget.user。

var tabs;
@override
void initState() {
super.initState();
tabs = [
Container(
child: FirestoreSlideshow(),
),
Container(
child: ProfilePage(widget.user), //Got an error on this line
)
];
}

关于flutter - 跨多个窗口小部件传递Firebase用户Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61732051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com