选项卡上的路由导致黑屏

时间:2019-05-19 14:24:04

标签: flutter routes navigation

我定义了ontap方法来导航到SecondRoute类,但它导致黑屏。为解决此问题,我也用Scaffold替换了MaterialApp但没有找到运气


class FirstMain extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body:TabviewWidget(),
      drawer: Drawer(

        child: ListView(
          children: <Widget>[

            ListTile(
              title: Text('Item 2'),
              onTap: () {
                Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => SecondRoute()),
            );

              },
            ),
          ],
        ),
      ),

    );

  }
}

class SecondRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Second Route"),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Go back!'),
        ),
      ),
    );
  }
}

我应该打开SecondRoute,但出现黑屏

1 个答案:

答案 0 :(得分:0)

您遇到层次结构问题。应该是这样的:

void main(){
  runApp(MaterialApp(home: HomePage()); // => HomePage is a Scaffold
}

class HomePage extends StatefulWidget....

import 'package:flutter/material.dart';

void main(){
  runApp(App());
}

class App extends StatefulWidget {
  @override
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: HomePage(),);
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}