Простое в использовании колесо Flutter рекомендует восьмикратно взмахнуть крутой анимированной нижней панелью вкладок.

Flutter

предисловие

Flutter — это платформа мобильного пользовательского интерфейса Google для быстрого создания высококачественных нативных пользовательских интерфейсов на iOS и Android.

Знаменитый Николас Гольбао в ИТ-индустрии однажды сказал: Колесо — это лестница ИТ-прогресса! Популярные фреймворки такие же, простые в использовании колеса, чтобы выбрать один из тысячи! В качестве кроссплатформенной среды разработки, появившейся за последние два года, сторонняя экосистема Flutter немного меньше, чем другие зрелые среды, но количество колес уже велико. В этой серии статей выбираются и делятся колесами, которые обычно используются в повседневной разработке приложений, чтобы повысить эффективность перемещения кирпичиков для всех.В то же время я надеюсь, что экология флаттера будет становиться все более и более совершенной, и будет все больше и больше больше колес.

В этой серии статей подготовлено более 50 рекомендаций по колесам, причины работы, и постарайтесь публиковать статью каждые 1-2 дня.

совет: эта серия статей подходит для разработчиков, у которых уже есть основы флаттера.Чтобы начать, нажмите:официальный сайт флаттера

текст

рулевое колесо

  • Название колеса: Curved_navigation_bar
  • Обзор колеса: классная анимированная нижняя панель вкладок для флаттера.
  • Колесо Автор: rafbednarczuk@gmail.com
  • Рекомендуемый индекс: ★★★★
  • Общий индекс: ★★★★
  • Предварительный просмотр эффекта:
    原文效果gif
    效果图

Установить

dependencies:
  curved_navigation_bar: ^0.3.1
import 'package:curved_navigation_bar/curved_navigation_bar.dart';

использовать

  • items: список виджетов кнопок
  • index: индекс NavigationBar, который можно использовать для изменения текущего индекса или установки начального индекса.
  • color: цвет панели навигации, значение по умолчанию — Colors.white.
  • buttonBackgroundColor: цвет фона плавающей кнопки.
  • backgroundColor: фон, когда анимация NavigationBar пуста, по умолчанию Colors.blueAccent
  • onTap: событие нажатия кнопки (индекс)
  • animationCurve: кривая анимации, по умолчанию Curves.easeOutCubic
  • animationDuration: продолжительность анимации изменения кнопки, по умолчанию Duration (миллисекунды: 600)
  • высота: высота панели навигации, минимальное значение – 0,0, максимальное – 75,0.

Пример по умолчанию:

Scaffold(
  bottomNavigationBar: CurvedNavigationBar(
    backgroundColor: Colors.blueAccent,
    items: <Widget>[
      Icon(Icons.add, size: 30),
      Icon(Icons.list, size: 30),
      Icon(Icons.compare_arrows, size: 30),
    ],
    onTap: (index) {
      //Handle button tap
    },
  ),
  body: Container(color: Colors.blueAccent),
)

Используется вместе с TabBarView.

class CurvedNavigationBarDemo extends StatefulWidget {
    CurvedNavigationBarDemo({Key key}) : super(key: key);

    @override
    _CurvedNavigationBarDemoState createState() => _CurvedNavigationBarDemoState();
}

class _CurvedNavigationBarDemoState extends State<CurvedNavigationBarDemo> with SingleTickerProviderStateMixin{

    TabController tabController;

    List colors=[Colors.blue,Colors.pink,Colors.orange];

    int currentIndex=0;

    @override
    void initState() {
        // TODO: implement initState
        super.initState();
        tabController = TabController(vsync: this, length: 3)..addListener((){
            setState(() {
                currentIndex=tabController.index;
            });
        });
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(
            bottomNavigationBar: CurvedNavigationBar(
                backgroundColor: colors[currentIndex],
                index: currentIndex,
                items: <Widget>[
                    Icon(Icons.home, size: 30),
                    Icon(Icons.fiber_new, size: 30),
                    Icon(Icons.person, size: 30),
                ],
                onTap: (index) {
                    //Handle button tap
                    setState(() {
                        currentIndex=index;
                    });
                    tabController.animateTo(index,duration: Duration(milliseconds: 300), curve: Curves.ease);
                },
            ),
            body: TabBarView(
                controller: tabController,
                children: <Widget>[
                    Container(
                        color: colors[0],
                    ),
                    Container(
                        color: colors[1],
                    ),
                    Container(
                        color: colors[2],
                    )
                ],
            )
        );
    }
}

конец