Как добавить число значков как часть BottomNavigationBarItem в flutter

Я пишу приложение Flutter, которое обновляет 9X_flutter-sdk количество уведомлений в BottomNavigationBar.

Я использовал 9X_ios-sdk нижнюю навигационную библиотеку (AHBottomNavigation) для достижения 9X_flutter той же цели в родном Android (java), но, похоже, я 9X_iphone-os не могу найти способ обойти это с помощью 9X_dart флаттера.

 items: [ BottomNavigationBarItem( title: Text('Home'), icon: Icon(Icons.home)), BottomNavigationBarItem( title: Text('Friends'), icon:Icon(Icons.notifications)), BottomNavigationBarItem( title: Text('Settings'), icon: Icon(Icons.settings)), ], 

Я хочу получить то, что указано 9X_dart на этикетке 2 с 4, прикрепленным к BottomNavigationBarItem.

9X_Как добавить число значков как часть BottomNavigationBarItem в flutter_android-ui

7
0
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как добавить число значков как часть BottomNavigationBarItem в flutter

Вы также можете использовать пакет badges, изображение 9X_iphone-os с его страницы:

9X_Как добавить число значков как часть BottomNavigationBarItem в flutter_ios

А затем укажите его как icon в 9X_android-application свой BottomNavigationBarItem:

BottomNavigationBarItem( icon: BadgeIconButton( itemCount: 5, // required icon: Icon( Icons.monetization_on, color: _selectedIndex == 2 ? Colors.blue : Colors.grey, ), // required badgeColor: Colors.red, // default: Colors.red badgeTextColor: Colors.white, // default: Colors.white hideZeroCount: true, // default: true onPressed: null), title: Text( 'Item', style: TextStyle( color: _selectedIndex == 2 ? Colors.blue : Colors.grey, ), )), 

11
0

Ответ #2

Ответ на вопрос: Как добавить число значков как часть BottomNavigationBarItem в flutter

Попробуйте это:

 import 'dart:async'; import 'package:flutter/material.dart'; import 'badge_icon.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State { StreamController _countController = StreamController(); int _currentIndex = 0; int _tabBarCount = 0; List _pages; Widget _tabBar() { return BottomNavigationBar( items: [ const BottomNavigationBarItem( icon: Icon(Icons.home, size: 25), title: const Text("Increment"), ), BottomNavigationBarItem( icon: StreamBuilder( initialData: _tabBarCount, stream: _countController.stream, builder: (_, snapshot) => BadgeIcon( icon: Icon(Icons.chat, size: 25), badgeCount: snapshot.data, ), ), title: const Text("Decrement"), ), ], currentIndex: _currentIndex, onTap: (index) => setState(() => _currentIndex = index), ); } @override void initState() { _pages = [ Container( child: Center( child: FlatButton( child: Text('Increment'), onPressed: () { _tabBarCount = _tabBarCount + 1; _countController.sink.add(_tabBarCount); }, ), ), ), Container( child: Center( child: FlatButton( child: Text('Decrement'), onPressed: () { _tabBarCount = _tabBarCount - 1; _countController.sink.add(_tabBarCount); }, ), ), ), ]; super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Tab Bar Icon Badge'), ), body: _pages[_currentIndex], bottomNavigationBar: _tabBar(), ); } @override void dispose() { _countController.close(); super.dispose(); } } 

Виджет BadgeIcon:

 import 'package:flutter/material.dart'; class BadgeIcon extends StatelessWidget { BadgeIcon( {this.icon, this.badgeCount = 0, this.showIfZero = false, this.badgeColor = Colors.red, TextStyle badgeTextStyle}) : this.badgeTextStyle = badgeTextStyle ?? TextStyle( color: Colors.white, fontSize: 8, ); final Widget icon; final int badgeCount; final bool showIfZero; final Color badgeColor; final TextStyle badgeTextStyle; @override Widget build(BuildContext context) { return new Stack(children: [ icon, if (badgeCount > 0 || showIfZero) badge(badgeCount), ]); } Widget badge(int count) => Positioned( right: 0, top: 0, child: new Container( padding: EdgeInsets.all(1), decoration: new BoxDecoration( color: badgeColor, borderRadius: BorderRadius.circular(8.5), ), constraints: BoxConstraints( minWidth: 15, minHeight: 15, ), child: Text( count.toString(), style: new TextStyle( color: Colors.white, fontSize: 10, ), textAlign: TextAlign.center, ), ), ); } 

9X_Как добавить число значков как часть BottomNavigationBarItem в flutter_ios-sdk

9X_apple-ios

5
0