作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有办法在 CupertinoTabBar 中停靠 float 操作按钮。我想得到如下图所示的结果
我的屏幕组织如下
child: Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: FloatingActionButton.extended(
backgroundColor: kColorAccent,
onPressed: () {},
label: Text('To my Favorites!'),
icon: Icon(Icons.favorite),
),
最佳答案
和大家一样,我花了一些时间寻找这个问题的最佳答案,在仔分割析代码后我找到了一个解决方案并在下面分享,这是我工作的项目的一个片段,但它可以用一般的
import 'package:app_example/floatingAction.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.endTop,
floatingActionButton: FloatingAction(),
bottomNavigationBar: CupertinoTabScaffold(
tabBar: CupertinoTabBar(
activeColor: Colors.red,
inactiveColor: Colors.grey,
items: [
BottomNavigationBarItem(
icon: Icon(
Icons.loyalty_outlined,
),
label: "Productos",
),
BottomNavigationBarItem(
icon: Icon(
Icons.people,
),
label: 'Clientes',
),
BottomNavigationBarItem(
icon: Icon(
Icons.shopping_cart_outlined,
),
label: 'Ventas',
),
BottomNavigationBarItem(
icon: Icon(
Icons.timeline,
),
label: "Historial",
),
]),
tabBuilder: (BuildContext contex, int index) {
switch (index) {
case 0:
return CupertinoTabView(
builder: (BuildContext context) => ProductScreen(),
);
break;
case 1:
return CupertinoTabView(
builder: (BuildContext context) => ClientScreen(),
);
break;
case 2:
return CupertinoTabView(
builder: (BuildContext context) => MarketScreen(),
);
break;
case 3:
return CupertinoTabView(
builder: (BuildContext context) => HistoryScreen(),
);
break;
}
return null;
}),
);
}
}
class FloatingAction extends StatelessWidget {
@override
Widget build(BuildContext context) {
return return Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
margin: EdgeInsets.only(bottom:70),
child: FloatingActionButton(
onPressed: () {
print('click en botton');
Navigator.of(context).push(
MaterialPageRoute(builder: (context) =>NewMarket()),
);
},
child: Icon(Icons.queue),
backgroundColor: Colors.red,
),
),
],
);
}
}
将floatingActionButton 分离成一个独立的类,
FloatingAction
, 允许我们为小部件提供更多功能,在本例中为
Column
, 带有
mainAxisAlignment: MainAxisAlignment.end,
这允许我们对小部件的底部进行对齐,并使用
floatingActionButtonLocation: FloatingActionButtonLocation.endTop,
, 允许我们在屏幕边缘定义一个位置,从这个意义上说,只需要使用
margin: EdgeInsets.only ( bottom: 70),
来定位按钮的首选高度。容器
margin: EdgeInsets.only (bottom: 70, right: MediaQuery.of (context) .size.width / 2 - 45),
bottom
将指示高度,
right
引用中心的位置。
Column
中执行此过程如果需要,将允许我们在 future 添加更多 float 按钮。
关于scaffold - 我可以在 CupertinoTabBar 中停靠 float 操作按钮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58077794/
如何将 CControlBar 派生窗口停靠到拆分窗口 (CSplitterWnd) 的中间?我希望在移动分离器时重新定位栏。 为了更清楚地说明我所追求的是什么,想象一下 Visual Studio(
我正在使用我认为是在 90 年代初开发的 MFC 代码。我被赋予了将软件带入 21 世纪的艰巨任务,使其能够在 Windows 7/8 之类的系统上运行。该应用程序面向众多平台,其中一个是 Windo
我有一个导航 View ,在导航 View 中我想在导航栏的右侧放置一个按钮 here is sencha fiddle My Fiddle is here 你可以看到我的菜单按钮,我希望该按钮位于右
我创建了以下 fiddle 来说明问题 http://jsfiddle.net/spjvo6g2/ 如何将activelist等子div停靠到父div的顶部垂直对齐
我是一名优秀的程序员,十分优秀!