【发布时间】:2021-11-04 01:05:32
【问题描述】:
听:假 我正在尝试停止重建 LandingUser 小部件,但它不适用于 listen : false 。如果它继续重建,我将面临另一个问题,我在下面的代码中解释了它//。
LandingUser 类
class LandingUser extends StatelessWidget {
const LandingUser({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
print("Landing User Rebuild ----------");
final auth = Provider.of<AuthService?>(context , listen: false); // false not working
print(auth);
return StreamBuilder<MyUser?>(
stream: auth!.onChangeStateUser,
builder: (context, snapshot) {
print(snapshot.hasData);
print(snapshot);
if (snapshot.connectionState == ConnectionState.active) {
MyUser? user = snapshot.data;
print("user $user");
if (user == null) {
return Scaffold(body: Text('test login rebuild'),); // LogingScreen();
} else {
return Scaffold(body: Text('test Not null User rebuild'),); // UserProfile();
}
}else{
//if(user==null){return LoginScreen();} //without if .. CircularProgressIndicator don't stop because I used in Login Screen page TextFormFeild and when foucse the widget rebuild itself and start loading again cuz the widget rebuilt .. this is another issue _!_
return Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
},
);
}
}
根小部件主:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
print("Main rebulided");
return Provider<AuthService?>.value(
value: AuthService(),
child: MaterialApp(
//.......
),
);
}
}
auth!.onChangeStateUser 流获取器:
@override
Stream<MyUser?>? get onChangeStateUser => _auth.authStateChanges().map((event) => _userFromFirebase(event));
_userFromFirebase 私有函数:
MyUser? _userFromFirebase(User? user) {
if (user == null) {
return null;
}
return MyUser(uid: user.uid);
}
提前致谢
【问题讨论】:
标签: firebase flutter dart flutter-provider