[英]How can I add shadow to a BottomNavigationBarItem
I have used the BottomNavigationBar
widget from material.dart
.我已经使用了
BottomNavigationBar
从部件material.dart
。 I want to have a background shadow on the selected BottomNavigationBarItem
.我想在选定的
BottomNavigationBarItem
上有一个背景阴影。 The desired output is Something like this.所需的输出是这样的。 I have written the following code whose output is like this :
我编写了以下代码,其输出如下:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shoppingapp/views/screens/cart/cart.dart';
import 'package:shoppingapp/views/screens/profile/profile.dart';
class BottomNavBar extends StatefulWidget {
const BottomNavBar({Key? key}) : super(key: key);
@override
_BottomNavBarState createState() => _BottomNavBarState();
}
class _BottomNavBarState extends State<BottomNavBar> {
int _selectedIndex = 0;
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
static const TextStyle optionStyle =
TextStyle(fontSize: 30, fontWeight: FontWeight.bold);
List<BottomNavigationBarItem> items = [
BottomNavigationBarItem(
icon: Icon(Icons.home_outlined),
label: "Home",
backgroundColor: Colors.black),
BottomNavigationBarItem(
icon: Icon(Icons.shopping_bag_outlined),
label: "Cart",
backgroundColor: Colors.black),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.heart),
label: "Wishlist",
backgroundColor: Colors.black),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.profile_circled),
label: "Profile",
backgroundColor: Colors.black)
];
static const List<Widget> _widgetOptions = <Widget>[
Text(
'Home',
style: optionStyle,
),
Cart(),
Text(
'Wishlist',
style: optionStyle,
),
Profile(),
];
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topRight: Radius.circular(30), topLeft: Radius.circular(30)),
boxShadow: [
BoxShadow(color: Colors.black38, spreadRadius: 0, blurRadius: 10),
],
),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25.0),
topRight: Radius.circular(25.0),
),
child: BottomNavigationBar(
items: items,
type: BottomNavigationBarType.shifting,
currentIndex: _selectedIndex,
showSelectedLabels: true,
showUnselectedLabels: false,
selectedItemColor: Colors.white,
iconSize: 30,
onTap: _onItemTapped,
backgroundColor: Colors.white,
),
),
);
}
}
You can try using this package Flutter Glow你可以尝试使用这个包Flutter Glow
GestureDetector(
onTap: () {
setState(() {
iconSelected = !iconSelected;
});
},
child: GlowIcon(
iconSelected ? Icons.wb_cloudy : Icons.cloud_queue,
color: flutterColor,
glowColor: iconSelected ? flutterColor : Colors.transparent,
size: 64,
blurRadius: 9,
),
);
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.