2017-07-12 68 views
0

我收到此錯誤,每當我嘗試通過點擊圖標在抽屜裏使用中的onTap導航到一個特定的頁面

錯誤信息導航當我點擊抽屜裏的物品 enter image description here

...onTap:_profile 
//jump to function... 
Widget build (BuildContext context){ 
void _profile() { 
    Navigator.popAndPushNamed(context, "/Profile");}... 

這是主要的功能看起來像

void main() { 
    runApp(new MaterialApp(
    home: new LoginPage(), 

    routes: <String, WidgetBuilder>{ 
    "/Feed": (BuildContext context) => new first.Feed(), 
    "/Settings":(BuildContext context) => new sixth.Settings(), 
    "/Profile": (BuildContext context) => new fifth.Profile(), 
    "/Search": (BuildContext context) => new second.Search(), 
    //"/Signout":(BuildContext context) => new LogoutPage(), 
    "/Notify": (BuildContext context) => new third.Notifications(), 
    "/Feedback": (BuildContext context) => new fourth.Feedback(), 
    "/Tabs": (BuildContext context) => new Tabs(),..... 

更新:

我正在使用谷歌sigin與Firebase身份驗證,但我需要在登錄後重定向用戶以查看我的應用程序。

我是新來撲,所以我還是不知道如何解決此所以在這裏我做了什麼

Future<String> _testSignInWithGoogle() async{ 
//implement signin 
runApp(
    new MaterialApp(
    home: new Tabs(), 
) 
); 
return 'signInWithGoogle succeeded: $user'; 
} 

這是混亂的,但我不明白,我怎麼還能將用戶重定向簽訂後在查看Tabs()中,我的程序的當前流程是: loginPage() - > onPressed:_signIn - >調用_testSignInWithGoogle() - >創建新Tabs()。

+0

您是否可以包含對新MaterialApp的調用,以便我們可以看到您的路線是如何設置的? –

+0

@CollinJackson我已將主要功能添加到帖子中。 – aziza

回答

0

它適用於我,所以如果可以的話,請張貼減少的測試用例。你確定你的代碼中沒有其他的NavigatorMaterialApp實例嗎?

這是我用來測試的代碼。

import 'package:flutter/material.dart'; 

class LoginPage extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    void _profile() { 
     Navigator.popAndPushNamed(context, "/Profile"); 
    } 
    return new Scaffold(
     appBar: new AppBar(
     title: new Text('Login'), 
    ), 
     drawer: new Drawer(
     child: new InkWell(
      onTap: _profile, 
      child: new Icon(Icons.navigate_next), 
     ), 
    ) 
    ); 
    } 
} 

class Profile extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new Center(
     child: new Text('You made it!'), 
    ), 
    ); 
    } 
} 

void main() { 
    runApp(new MaterialApp(
    home: new LoginPage(), 

    routes: <String, WidgetBuilder> 
    { 
    "/Profile": (BuildContext context) => new Profile(), 
    } 
)); 
} 

如果你不能找出什麼是您的版本和我之間的不同,你可以嘗試實施onGenerateRoute,而不是傳遞routes參數MaterialApp

+0

我想你指出了這個問題,是的,我確實在主函數中包含的另一個MaterialApp()實例旁邊。我已經相應地更新了這篇文章。 – aziza

+0

哦,我發現我錯過了在_testSignInWithGoogle()方法中的MaterialApp()中設置路由!非常感謝您的幫助。 – aziza

+0

,我可以問你,如果你發現我的結構在邏輯上是正確的? @CollinJackson – aziza

相關問題