我在切换到另一个页面(从登录页面到仪表板页面)时遇到了这个问题。
错误:
在小部件树中检测到重复的 GlobalKey。
... 由于 GlobalKey 重新父级而强制移除一个或多个子级后未更新的特定父级是:
代码:
class LoginPage extends StatelessWidget {
final GlobalKey<ScaffoldState> _key = GlobalKey<ScaffoldState>();
final FocusNode passFocus = FocusNode();
final FocusNode emailFocus = FocusNode();
@override
Widget build(BuildContext context) {
final authProvider = Provider.of<AuthProvider>(context);
return authProvider.status == Status.Authenticating
? Loading()
: Scaffold(
key: _key,
body: ...
和
class LayoutTemplate extends StatelessWidget {
final GlobalKey<ScaffoldState> _key = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: _key,
body: ...
这是我的导航服务:
class NavigationService {
final GlobalKey<NavigatorState> navigatorKey =
GlobalKey<NavigatorState>();
Future<dynamic> navigateTo(String routeName, {ArgumentsClass arguments}) {
return navigatorKey.currentState.pushNamed(routeName, arguments: arguments);
}
Future<dynamic> globalNavigateTo(String routeName, BuildContext context) {
return Navigator.of(context).pushNamed(routeName);
}
void goBack() {
return navigatorKey.currentState.pop();
}
}
答案 0 :(得分:0)
您在导航服务中创建了一个密钥并将其发送到任何地方 脚手架键是一种独特的东西,你必须在一个特定的页面中创建和使用它