首页 > 解决方案 > 如果正文有两个脚手架,如何关闭应用程序页面

问题描述

我正在使用这条线关闭页面 Navigator.pop(context);,但在这种情况下它显示黑屏,我尝试调用 Navigator.pop(context);2 次,但黑页仍然存在。在这里做什么?我的页面代码

import 'package:appname/GradientAppBar.dart';
import 'package:appname/bizutil/bill_card.dart';
import 'package:flutter/material.dart';

class BookingHistory extends StatefulWidget {
  BookingHistory({Key key}) : super(key: key);

  @override
  _BookingHistoryState createState() => _BookingHistoryState();
}

class _BookingHistoryState extends State<BookingHistory> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home:
      Scaffold(
        appBar: PreferredSize(child: GradientAppBar(popCount:2),preferredSize: Size(double.infinity, 100),),
        body:    DefaultTabController(
            length: 3,
            child: Scaffold(
              // backgroundColor: Colors.white,
              appBar: AppBar(
                flexibleSpace: Container(
                  color: Colors.white,
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: <Widget>[
                      TabBar(
                          indicatorColor: Colors.blueAccent,
                          tabs: [
                            Tab(
                              child: Text(
                                "Completed",
                                style: TextStyle(color: Colors.blue),
                              ),
                            ),
                            Tab(
                              child: Text(
                                "Requested",
                                style: TextStyle(color: Colors.blue),
                              ),
                            ),
                            Tab(
                              child: Text(
                                "Accepted",
                                style: TextStyle(color: Colors.blue),
                              ),
                            )
                          ])

                    ],
                  ),
                ),
              ),

              body: TabBarView(children: [
                Container(
                  child: ListView.builder(
                      itemCount: 5,
                      itemBuilder: (context,index){
                    return BillCard();
                  }),
                ),
                Container(
                  child: ListView.builder(
                      itemCount: 10,
                      itemBuilder: (context,index){
                        return BillCard();
                      }),
                ),
                Container(
                  child: ListView.builder(
                      itemCount: 20,
                      itemBuilder: (context,index){
                        return BillCard();
                      }),
                ),
              ]),
            )),
      )


    );
  }
}


这里 GradientAppBar 是一个 StatelessWidget

标签: flutterflutter-layout

解决方案


您的项目应该MaterialApp只声明一次,基本上是在main.dart文件中。

从 build() 方法中删除MaterialAppWidget。

Widget build(BuildContext context) {
    return MaterialApp(....)

Widget build(BuildContext context) {
    return Scaffold(...)

如果它对您有用,请通过单击“正确勾选”图标将解决方案标记为已接受。


推荐阅读