我在我的颤振应用程序中使用 CupertinoTabBar。问题是当键盘出现时,bottomBar 会显示,而它不应该。它是一个底部栏,它应该始终位于底部。
我还没有找到一些方法或技巧来做到这一点。也许有人可以指导我获得正确的行为。
这是我的颤振医生输出
医生摘要(要查看所有详细信息,请运行 flutter doctor -v):
[?] Flutter (Channel master, v1.6.1-pre.50, on Linux, locale en_US.UTF-8)
[?] Android 工具链 - 为 Android 设备开发(Android SDK 版本 28.0.3)
[?] Android Studio(3.3 版)
[?] VS Code(版本 1.33.1)
[?] 连接的设备(1 个可用)
这是 cupertinoTabBar 允许的唯一选项:
const CupertinoTabBar({
Key key,
@required this.items,
this.onTap,
this.currentIndex = 0,
this.backgroundColor,
this.activeColor,
this.inactiveColor = CupertinoColors.inactiveGray,
this.iconSize = 30.0,
this.border = const Border(
top: BorderSide(
color: _kDefaultTabBarBorderColor,
width: 0.0, // One physical pixel.
style: BorderStyle.solid,
),
),
})
Run Code Online (Sandbox Code Playgroud)
这是出现键盘时我的 …
我想知道是否有办法在 CupertinoTabBar 中停靠浮动操作按钮。我想得到如下图所示的结果
我的屏幕组织如下
我尝试将以下代码添加到我的Scaffold 中,但结果不是我想要的。我理解问题是 TabBar 不在脚手架内,因此它没有停靠但是我想知道是否有办法将浮动按钮放在其他地方以获得我想要的结果
这是代码
child: Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: FloatingActionButton.extended(
backgroundColor: kColorAccent,
onPressed: () {},
label: Text('To my Favorites!'),
icon: Icon(Icons.favorite),
),
Run Code Online (Sandbox Code Playgroud)
这是我得到的结果......
我正在尝试在 Flutter 中设置一个多页面应用程序,其中底部选项卡包含四个最常用的页面,包括一个“更多”按钮。更多按钮显示包含其他页面链接的页面。当点击某个页面时,我希望这个页面取代“更多”页面,因此创建了一个新的导航堆栈。但是,当切换到另一个选项卡然后返回“更多”选项卡时,导航状态会被记住。这意味着我没有看到“更多”页面,而是看到切换选项卡时离开的页面。我想每次用户单击“更多”选项卡时显示“更多”页面。
我尝试过使用导航器的pushReplacement方法,因此当用户单击更多页面时,他无法导航回更多页面列表。但是,当切换选项卡时,更多页面现在永远不会显示,因为它已被替换。
我还尝试调整选项卡回调方法,以弹出所有视图并将导航器返回到更多屏幕。然而,这给我在控制台中留下了一个错误:setState() or markNeedsBuild() called during build.。
选项卡屏幕:
class TabScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return TabScreenState();
}
}
class TabScreenState extends State<TabScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: WillPopScope(
// Prevent swipe popping of this page. Use explicit exit buttons only.
onWillPop: () => Future<bool>.value(true),
child: CupertinoTabScaffold(
tabBar: CupertinoTabBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text('Artikelen'),
),
BottomNavigationBarItem(
icon: Icon(Icons.message),
title: Text('Activiteiten'),
),
BottomNavigationBarItem(
icon: Icon(Icons.speaker_group),
title: Text('Training'), …Run Code Online (Sandbox Code Playgroud) 我正在运行Google的Flutter Gallery示例:
在下面的gif中,请注意当我从一个屏幕导航到下一个屏幕时,库比蒂诺选项卡栏如何停留在屏幕底部。出现这种情况的原因是,它是位于父小部件CupertinoNavigationDemo内的小部件,并且在将选项卡换入和换出视图时,选项卡栏仍保留。
导航时是否有摆脱标签栏的方法?
我有一个带有登录屏幕的应用程序,成功登录后会转到主屏幕。我使用下面的代码来替换小部件并启动一个新的导航堆栈:
Navigator.pushReplacement(
context,
CupertinoPageRoute(
builder: (context) => HomeScreen(),
),
);
Run Code Online (Sandbox Code Playgroud)
主屏幕是CupertinoTabScaffold2 CupertinoTabViews。
第二个CupertinoTabView包含一个带有注销按钮的小部件。
成功注销后,我想删除 HomeWidget,然后转到 LoginScreen。
使用
Navigator.pushReplacement(
context,
CupertinoPageRoute(
builder: (context) => LoginScreen(),
),
);
Run Code Online (Sandbox Code Playgroud)
在第二个内的 Widget 中,CupertinoTabView仅重置其导航,并且 LoginScreen 出现在第二个内CupertinoTabView。
我想要的是一些代码来删除我的主屏幕并使用登录屏幕启动新的导航堆栈。
我使用 CupertinoTabBar,但想在用户设备是 Android 时显示材质设计 BottomSheet。但是,当我同时使用它们时,BottomSheet 隐藏在 CupertinoTabBar 后面,如下所示。
你能帮我解决这个问题吗?或者两者同时使用是否不好?
class MyApp extends StatelessWidget {
void onPressed(BuildContext context) async {
await showModalBottomSheet(
context: context,
builder: (context) => Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
title: Text('Delete'),
onTap: () => Navigator.of(context).pop('delete'),
),
Divider(),
ListTile(
title: Text('Cancel'),
onTap: () => Navigator.of(context).pop('cancel'),
)
],
),
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: CupertinoTabScaffold(
tabBar: CupertinoTabBar(
items: [
BottomNavigationBarItem(
icon: Icon(Icons.music_note),
),
BottomNavigationBarItem(
icon: Icon(Icons.settings),
),
]
),
tabBuilder: (context, index) { …Run Code Online (Sandbox Code Playgroud) flutter bottom-sheet cupertinotabbar flutter-cupertino flutter-showmodalbottomsheet