我在Flutter中的Appbar有问题。如何删除屏幕上的额外空间?(黑线)。
截图
的数据
class MainScreen extends StatelessWidget {
const MainScreen({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp.router(
title: 'Sample',
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en'),
Locale('pl'),
],
theme: theme,
routerConfig: router,
);
}
}
final GoRouter router = GoRouter(
initialLocation: "/",
routes: <RouteBase>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return SomePage(navController: _navController);
},
routes: <RouteBase>[
GoRoute(
path: 'page1',
pageBuilder: (BuildContext context, GoRouterState state) => CupertinoPage(child: OtherPage1(navController: _navController)),
),
GoRoute(
path: 'page2',
pageBuilder: (BuildContext context, GoRouterState state) => CupertinoPage(child: OtherPage2(navController: _navController)),
)
],
),
],
);
class SomePage extends StatelessWidget {
final NavController navController;
const SomePage({super.key, required this.navController});
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
/* here is some code, not relevant for this problem */
],
child: DefaultTabController(
length: 3,
child: BlocBuilder<CountersCubit, Counters>(
builder: (blockContext, state) {
FocusScopeNode currentFocus = FocusScope.of(blockContext);
return Scaffold(
appBar: AppBar(
leading: IconButton(
onPressed: () => { Navigate.back(navController) },
icon: const Icon(Icons.arrow_back)),
bottom: TabBar(
isScrollable: true,
indicatorSize: TabBarIndicatorSize.label,
indicatorColor: Colors.blue,
indicatorWeight: 3.0,
tabs: [
Tab(
text: processTextTabLabel(
label: AppLocalizations.of(context)!
.header_view1,
counter: state.view1)),
Tab(
child: badges.Badge(
showBadge: false,
child: Text(processTextTabLabel(
label: AppLocalizations.of(context)!
.header_view2,
counter: state.view2)),
)),
Tab(
text: processTextTabLabel(
label: AppLocalizations.of(context)!
.header_view3,
counter: state.view3)),
],
),
title: Text(AppLocalizations.of(context)!.header_title),
),
body: TabBarView(
children: [
View1(navController: navController),
View2(navController: navController),
View3(navController: navController)
],
),
);
},
),
));
}
}
我试探着:
1.在scaffold容器之前使用SafeArea小部件。
1.设置高度Appbar。
我尝试了五种方法,我发现堆栈溢出和其他网站。所有在这种情况下不工作。
如果我删除Appbar,视图看起来是正确的。
2条答案
按热度按时间9gm1akwq1#
1.溶液-01,
用
PreferredSize
PackageAppBar
,并将preferredSize
设置为零。字符串
2.溶液-02,
为AppBar使用自定义
PreferredSizeWidget
。创建自定义PreferredSizeWidget
并覆盖preferredSize
以控制AppBar的高度。型
然后你可以使用这个应用程序栏作为自定义.
型
3.溶液-03,
调整Scaffold的
extendBody
属性。在Scaffold中设置
extendBody: true
,以确保主体延伸到AppBar后面,这可能会解决空间问题。型
逐个尝试这些解决方案,看看它们是否解决了
AppBar
引起的额外空间问题。有时,部件的特定嵌套或Flutter更新可能会影响这些解决方案的工作方式。jtw3ybtb2#
Dhanusha Dilshan -我找到了解决方案。当然,我测试了你的解决方案,但我仍然高于appbar的距离。我添加:
字符串
和作品.应用程序栏默认有一个安全区的距离,和改变高度appbar,我们不改变这个距离.也许我忘了写在我的基地后,这个Flutter应用程序是模块.是添加到原生Android应用.所以我们不需要安全区.