flutter - BottomNavigationBar 在颤动中溢出
问题描述
这是我的代码。准确地说,底部导航栏溢出了 12 和 26 像素。任何解决方案?** 尝试了各种方式。我还创建了我的自定义底部导航栏小部件并将其放置在扩展小部件下方。我得到了同样的错误(溢出值不同)。现在,我正在使用一个名为 ScrollBottomNavigationBar 的颤振包。
import 'package:flutter/material.dart';
import 'package:justchat/components/bottom_navigation_bar.dart';
import 'package:justchat/components/input_box.dart';
import 'package:justchat/constants.dart';
import 'package:justchat/screens/login_screen.dart';
import 'package:scroll_bottom_navigation_bar/scroll_bottom_navigation_bar.dart';
class HomeScreen extends StatelessWidget {
final controller = ScrollController();
final items = <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(
Icons.home,
size: 10,
),
label: ("Home"),
),
BottomNavigationBarItem(
icon: Icon(
Icons.settings,
),
label: ("Settings"),
),
];
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(30),
topLeft: Radius.circular(30),
),
child: Wrap(
children: [
ScrollBottomNavigationBar(
controller: controller,
items: items,
),
],
),
),
body: SafeArea(
// bottom: false,
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.only(
top: 20.0,
left: 30.0,
),
child: Container(
child: Text(
"Message",
style: kLargeTextStyle,
),
),
),
Padding(
padding: const EdgeInsets.only(
top: 20,
right: 22,
),
child: Container(
height: 50,
width: 50,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100),
color: kActiveSecondaryColor,
),
child: Icon(
Icons.person,
color: kTabsColor,
),
),
),
],
),
Stack(
children: [
InputBox(
padding: EdgeInsets.only(
left: 25,
right: 25,
top: 30,
),
hintText: "Find your friends?",
),
Padding(
padding: EdgeInsets.only(
top: 40.0,
right: 30.0,
),
child: GestureDetector(
onTap: () {
print("Search button Pressed");
}, //Functionality
child: Container(
alignment: Alignment.centerRight,
child: Icon(
Icons.search,
size: 40,
color: kChatscreenSecondaryColor,
),
),
),
),
],
),
SizedBox(
height: 50,
),
Expanded(
child: Container(
decoration: BoxDecoration(
color: kTabsColor,
borderRadius: BorderRadius.only(
topRight: Radius.circular(40),
topLeft: Radius.circular(40),
),
),
),
),
],
),
),
);
}
}
解决方案
我认为ScrollBottomNavigationBar
您使用的软件包有问题。因为我复制了您的代码并将其变得简单BottomNavigationBar
并且运行良好。
您可以尝试两件事:
- 尝试使用.eg提供
heights
您的小部件树MediaQuery.of(context)size.height * <some multiple>
height: MediaQuery.of(context).size.height * 0.2
- 包裹你
Column
的SingleChildScrollView
下面是我从你那里编辑的代码和屏幕:
class HomeScreen extends StatelessWidget {
final controller = ScrollController();
final items = <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(
Icons.home,
// size: 10,
),
label: ("Home"),
),
BottomNavigationBarItem(
icon: Icon(
Icons.settings,
),
label: ("Settings"),
),
];
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: BottomNavigationBar(
items: items,
),
body: SafeArea(
// bottom: false,
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.only(
top: 20.0,
left: 30.0,
),
child: Container(
child: Text(
"Message",
style: TextStyle(fontSize: 32),
),
),
),
Padding(
padding: const EdgeInsets.only(
top: 20,
right: 22,
),
child: Container(
height: 50,
width: 50,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100),
// color: kActiveSecondaryColor,
),
child: Icon(
Icons.person,
color: Colors.purple,
size: 50,
),
),
),
],
),
Stack(
children: [
Padding(
padding: EdgeInsets.fromLTRB(10, 25, 0, 0),
child: Container(
padding: EdgeInsets.all(10.0),
width: 380,
height: 70,
color: Colors.grey[200],
child: Text(
"Find you Friends?",
style: TextStyle(fontSize: 30),
),
),
),
Padding(
padding: EdgeInsets.only(
top: 40.0,
right: 30.0,
),
child: GestureDetector(
onTap: () {
print("Search button Pressed");
}, //Functionality
child: Container(
alignment: Alignment.centerRight,
child: Icon(
Icons.search,
size: 40,
// color: kChatscreenSecondaryColor,
),
),
),
),
],
),
SizedBox(
height: 50,
),
Expanded(
child: Container(
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.only(
topRight: Radius.circular(40),
topLeft: Radius.circular(40),
),
),
),
),
],
),
),
);
}
}
推荐阅读
- c# - 实体框架递归填充 DTO 的子级
- mysql - 您可以在具有不同主键的多个表上运行内部连接命令吗?
- apache - 保护文件夹并将其重定向到 HTTPS
- c - 用c中的空格扫描多维字符串
- php - 共享主机上 FileViewFinder.php 第 137 行中的 InvalidArgumentException
- python - 网页抓取错误(HTTP 错误 403:禁止)
- java - 使用 Flink 时,字数总是在变化
- python - 如何安装旧版本的 Tensorflow?
- c# - 如何在 Windows 10 中获得默认的强调色?
- javascript - 使用 Map Function 编写 React 组件时,对象作为 React Child 无效