一个屏幕通向另一个带有导航栏的屏幕

问题描述

我对 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()?