问题描述
我对 Flutter 很陌生
我正在尝试创建一个名为 unAuthPage 的登录页面,登录后它将显示带有名为 AuthPage 的导航栏的主页,
现在登录身份验证只是一个名为 Auth 的布尔变量,,
我首先尝试将 bool 设为 false = 未登录,并显示登录页面
在登录页面中,如果您单击图像,则有 onTap 使 auth bool 为真
但我不能调用 authpage,
这是我的代码,如果有人可以帮助它会让我很高兴:)
import 'package:Flutter/material.dart';
import './joinedGroups.dart';
import './searchCommunity.dart';
import './login.dart';
import './profile.dart';
import './settings.dart';
bool auth=false;
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
State<StatefulWidget> createState() {
print("inMyApp");
return auth? authPage() : unAuthPage() ;
}
}
// ignore: camel_case_types
class authPage extends State<MyApp>{
int _selectedPage = 0;
final _pageOptions = [
eventsPage(),eventsPage(),savedEventsPage(),profilePage(),settingsPage(),];
Widget build(BuildContext context) {
print("inAuthPage");
return MaterialApp(
debugShowCheckedModeBanner: false,theme: ThemeData(
primarySwatch: Colors.indigo,),home: Scaffold(
appBar: AppBar(title: Center( child: Text('Saudi Events')),body: _pageOptions[_selectedPage],bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,currentIndex: _selectedPage,onTap: (int index){
setState(() {
_selectedPage = index;
});
},iconSize: 30.0,items: [
BottomNavigationBarItem(
icon: Icon(Icons.language),title: Text('')
),BottomNavigationBarItem(
icon: Icon(Icons.group),title: Text('')
),BottomNavigationBarItem(
icon: Icon(Icons.camera_alt),BottomNavigationBarItem(
icon: Icon(Icons.person),title: Text('')
),BottomNavigationBarItem(
icon: Icon(Icons.settings),title: Text('true')
),],);
}
}
class unAuthPage extends State<MyApp>{
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,theme: ThemeData(
primarySwatch: Colors.indigo,home: Scaffold(
appBar: AppBar(
title: Text('Hopin',style: TextStyle(
fontFamily: "CaesarDresser",color: Colors.blueGrey
),centerTitle: true,backgroundColor: Colors.cyan[50],body:
Container(
padding: EdgeInsets.all(20.0),child: Column(
//mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
Image.asset('assets/images/logo.png'),Text('Weolcome to Hopin',style: TextStyle(
fontFamily: "CaesarDresser",fontSize: 40.0,color: Colors.blueGrey,GestureDetector(
onTap: () {
print("Tapped");
main();
},child: Container(
width: 260.0,height: 60,decoration: Boxdecoration(
image: decorationImage(
alignment: Alignment.bottomright,image: Assetimage(
'assets/images/google_signin_button.png'),fit: BoxFit.cover,)
],)
);
}
}
解决方法
如果你只想进入登录页面,那么你可以像这样在onTap中使用,
onTap: (){
Navigator.push(
context,MaterialPageRoute(builder: (context) => YourNextScreen()),);
}
或者您可以使用 setState() 将您的变量设为 false
为什么要在 onTap 中调用 main()?