【发布时间】:2022-11-29 22:54:03
【问题描述】:
我正在尝试在 TextSpan 上使用 TapGestureRecognizer 在 flutter 中的身份验证页面之间添加导航。一切都已设置,但单击的文本仍未导航到首选页面。
我使用 TapGestureRecognizer 的登录用户界面的一部分:
RichText(
text: TextSpan(
text: 'No account',
style: TextStyle(color: Colors.black),
children: [
TextSpan(
recognizer: TapGestureRecognizer()
..onTap = () => widget.onClickedSignUp,
text: 'Click Here',
style: TextStyle(
decoration: TextDecoration.underline,
color: Colors.black))
]))
login.dart 的第一部分:
class LoginScreen extends StatefulWidget {
final VoidCallback onClickedSignUp;
const LoginScreen({Key? key, required this.onClickedSignUp})
: super(key: key);
@override
State<LoginScreen> createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
TextEditingController emailController = TextEditingController();
TextEditingController passwordController = TextEditingController();
final navigatorKey = GlobalKey<NavigatorState>();
final formKey = GlobalKey<FormState>();
@override
void dispose() {
emailController.dispose();
passwordController.dispose();
super.dispose();
}
认证飞镖:
class _AuthPageState extends State<AuthPage> {
bool isLogin = true;
@override
Widget build(BuildContext context) => isLogin
? LoginScreen(onClickedSignUp: toggle)
: SignUpScreen(onClickedSignIn: toggle);
void toggle() {
setState(() {
isLogin != isLogin;
});
}
}
主要飞镖:
class MainPage extends StatelessWidget {
const MainPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: StreamBuilder<User?>(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(child: Text('Something went wrong'));
} else if (snapshot.hasData) {
return HomeScreen();
} else {
return AuthPage();
}
},
));
}
}
如果有人能帮助我,我将不胜感激!
【问题讨论】:
标签: flutter