Flutter渐变指示器插件tabbar_gradient_indicator的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter渐变指示器插件tabbar_gradient_indicator的使用

Tabbar gradient indicator 是一个为Flutter提供的自定义渐变指示器,它支持iOS和Android平台。

Screenshots

Getting Started

添加依赖

pubspec.yaml文件中添加如下依赖:

dependencies:
  tabbar_gradient_indicator: ^1.0.0

导入库

在需要使用的Dart文件中导入库:

import 'package:tabbar_gradient_indicator/tabbar_gradient_indicator.dart';

使用示例

下面是一个完整的示例代码,展示了如何在项目中使用tabbar_gradient_indicator创建带有渐变指示器的TabBar:

import 'package:flutter/material.dart';
import 'package:tabbar_gradient_indicator/tabbar_gradient_indicator.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    List<String> list = ["title - 1 - 1", "title - 1 - 2"];

    return DefaultTabController(
      length: list.length,
      child: MaterialApp(
          home: Builder(
        builder: (context) => Scaffold(
          appBar: AppBar(
            backgroundColor: Colors.white,
            elevation: 0,
            title: const Text("tabbar gradient indicator"),
            bottom: PreferredSize(
              preferredSize: const Size(double.infinity, 40),
              child: TabBar(
                enableFeedback: true,
                tabs: list.map((e) => Tab(text: e)).toList(),
                labelColor: Colors.black,
                indicator: const TabBarGradientIndicator(
                    gradientColor: [Color(0xff579CFA), Color(0xff2FDEE7)],
                    indicatorWidth: 4),
                indicatorSize: TabBarIndicatorSize.label,
                isScrollable: true,
              ),
            ),
          ),
          body: TabBarView(
              children: list.map((e) {
            return Center(child: Text(e));
          }).toList()),
        ),
      )),
    );
  }
}

这段代码实现了一个简单的应用,其中包含两个标签页,每个标签页上显示不同的文本。标签栏的指示器使用了TabBarGradientIndicator来设置渐变颜色,并且指定了指示器的宽度。

通过上述步骤,你就可以在自己的Flutter项目中集成并使用tabbar_gradient_indicator插件了。希望这个指南对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时提问。


更多关于Flutter渐变指示器插件tabbar_gradient_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter渐变指示器插件tabbar_gradient_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用tabbar_gradient_indicator插件来实现带有渐变指示器的TabBar的示例代码。

首先,确保你已经在pubspec.yaml文件中添加了tabbar_gradient_indicator的依赖:

dependencies:
  flutter:
    sdk: flutter
  tabbar_gradient_indicator: ^latest_version  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来是示例代码,展示如何使用tabbar_gradient_indicator来创建一个带有渐变指示器的TabBar:

import 'package:flutter/material.dart';
import 'package:tabbar_gradient_indicator/tabbar_gradient_indicator.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('TabBar Gradient Indicator Example'),
        ),
        body: DefaultTabController(
          length: 3,
          route: MaterialPageRoute.of(context)!,
          builder: (BuildContext context) {
            return Scaffold(
              bottomNavigationBar: GradientTabBar(
                items: [
                  BottomNavigationBarItem(
                    icon: Icon(Icons.home),
                    label: 'Home',
                  ),
                  BottomNavigationBarItem(
                    icon: Icon(Icons.search),
                    label: 'Search',
                  ),
                  BottomNavigationBarItem(
                    icon: Icon(Icons.settings),
                    label: 'Settings',
                  ),
                ],
                currentIndex: TabController.of(context)!.index,
                onTabSelected: (int index) {
                  TabController.of(context)!.index = index;
                },
                indicator: GradientIndicator(
                  begin: Alignment.topLeft,
                  end: Alignment.bottomRight,
                  colors: [Colors.blue, Colors.red],
                ),
              ),
              body: TabBarView(
                controller: TabController.of(context)!,
                children: [
                  Center(child: Text('Home Page')),
                  Center(child: Text('Search Page')),
                  Center(child: Text('Settings Page')),
                ],
              ),
            );
          },
        ),
      ),
    );
  }
}

class GradientTabBar extends StatelessWidget {
  final List<BottomNavigationBarItem> items;
  final int currentIndex;
  final ValueChanged<int> onTabSelected;
  final GradientIndicator indicator;

  GradientTabBar({
    required this.items,
    required this.currentIndex,
    required this.onTabSelected,
    required this.indicator,
  });

  @override
  Widget build(BuildContext context) {
    return BottomNavigationBar(
      items: items,
      currentIndex: currentIndex,
      onTap: onTabSelected,
      selectedItemColor: Colors.white,
      unselectedItemColor: Colors.grey,
      showUnselectedLabels: true,
      backgroundColor: Colors.black,
      type: BottomNavigationBarType.fixed,
      elevation: 10,
      unselectedFontSize: 12,
      selectedFontSize: 14,
      // 自定义渲染指示器
      foregroundDecoration: BoxDecoration(
        color: Colors.transparent,
        shape: BoxShape.rectangle,
        gradient: indicator.gradient(context, currentIndex),
      ),
    );
  }
}

class GradientIndicator {
  final Alignment begin;
  final Alignment end;
  final List<Color> colors;

  GradientIndicator({
    required this.begin,
    required this.end,
    required this.colors,
  });

  LinearGradient gradient(BuildContext context, int currentIndex) {
    final double screenWidth = MediaQuery.of(context).size.width;
    final double tabIndex = currentIndex * (screenWidth / 3);
    return LinearGradient(
      begin: begin,
      end: end,
      colors: colors,
      stops: [tabIndex / screenWidth, (tabIndex + screenWidth / 3) / screenWidth],
    );
  }
}

请注意,GradientIndicator类中的gradient方法只是一个示例,它可能并不完全符合你的需求。你可能需要根据你的UI设计调整渐变的位置和颜色。

这个示例展示了如何创建一个带有自定义渐变指示器的TabBar,并使用tabbar_gradient_indicator插件的类似效果。在实际项目中,你可能需要进一步优化和调整代码。

回到顶部