You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter隐藏/移除AppBar后顶部布局异常的解决求助

Flutter隐藏/移除AppBar后顶部布局异常的解决求助

各位大佬好,我最近开发Flutter应用时碰到个头疼的问题:我想把页面的AppBar隐藏或者直接移除,但试了两种方式——要么删掉AppBar相关代码,要么把appBar设为null——结果页面顶部的Widget直接贴到了屏幕最顶端,和状态栏挤在一起,布局看起来特别怪异,完全不符合预期。

我翻了好多技术文章都没找到解决思路,实在没办法了,来这儿求助大家!

先给大家看看两种状态的截图:

  • 有AppBar时的正常布局:
    有AppBar的页面布局

  • 移除AppBar后顶部布局异常的样子:
    移除AppBar后顶部布局异常

下面是我main.dart里的代码,麻烦大家帮忙找找问题出在哪,或者给个可行的解决办法:

import 'package:flutter/material.dart';

import 'package:flutter_complete_guide/widgets/balance.dart';

import 'package:flutter_complete_guide/widgets/chart.dart';

import './widgets/new_transaction.dart';

import './widgets/transaction_list.dart';

import './models/transaction.dart';

import './widgets/balance.dart';

import 'widgets/outcome.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

debugShowCheckedModeBanner: false,

title: 'My Expenses',

theme: ThemeData(

primarySwatch: Colors.purple,

fontFamily: 'Quicksand',

textTheme: ThemeData.light().textTheme.copyWith(),

appBarTheme: AppBarTheme(

titleTextStyle: TextStyle(

fontFamily: 'OpenSans',

fontSize: 20,

fontWeight: FontWeight.bold),

),

),

home: MyHomePage(),

);

}

}

class MyHomePage extends StatefulWidget {

// String titleInput;

// String amountInput;

@override

_MyHomePageState createState() => _MyHomePageState();

}

class _MyHomePageState extends State<MyHomePage> {

final List<Transaction> _userTransactions = [

// Transaction(

//   id: 't1',

//   title: 'New Shoes',

//   amount: 69.99,

//   date: DateTime.now(),

// ),

// Transaction(

//   id: 't2',

//   title: 'Weekly Groceries',

//   amount: 16.53,

//   date: DateTime.now(),

// ),

];

List<Transaction> get _recentTransactions {

return _userTransactions.where((tx) {

return tx.date.isAfter(

DateTime.now().subtract(

Duration(days: 7),

),

);

}).toList();

}

void _addNewTransaction(

String txTitle, double txAmount, DateTime chosenDate) {

final newTx = Transaction(

title: txTitle,

amount: txAmount,

date: chosenDate,

id: DateTime.now().toString(),

);

setState(() {

_userTransactions.add(newTx);

});

}

void startAddNewTransaction(BuildContext ctx) {

showModalBottomSheet(

context: ctx,

builder: (_) {

return GestureDetector(

onTap: () {},

child: NewTransaction(_addNewTransaction),

behavior: HitTestBehavior.opaque,

);

},

);

}

void _deleteTransaction(String id) {

setState(() {

_userTransactions.removeWhere((tx) {

return tx.id == id;

});

});

}

@override

Widget build(BuildContext context) {

return Scaffold(

body: SingleChildScrollView(

child: Column(

// mainAxisAlignment: MainAxisAlignment.start,

crossAxisAlignment: CrossAxisAlignment.stretch,

children: <Widget>[

Chart(_recentTransactions),

TransactionList(_userTransactions, _deleteTransaction),

Card(

elevation: 10,

shape: RoundedRectangleBorder(

borderRadius: BorderRadius.circular(15.0)),

child: Directionality(

textDirection: TextDirection.rtl,

child: TextButton.icon(

onPressed: () => startAddNewTransaction(context),

icon: Icon(Icons.add_task_outlined),

label: Text(

'Add expenses',

),

),

),

),

TotalBalance(),

TotalOutcome()

],

),

),

);

}

}

我的需求很简单:就是想把AppBar完全去掉,继续做后续的界面设计和功能开发,但要让顶部布局恢复正常,不要和状态栏挤在一起。麻烦大家帮忙支支招!

备注:内容来源于stack exchange,提问作者Danny Den

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:12:50