weekly_tab_pager 0.0.4 copy "weekly_tab_pager: ^0.0.4" to clipboard
weekly_tab_pager: ^0.0.4 copied to clipboard

discontinuedreplaced by: date_tab_pager

Customizable TabBar component with integrated TabView that displays weekdays and allows for infinite scrolling by week.

example/lib/main.dart

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

import 'package:weekly_tab_pager/weekly_tab_pager.dart';

void main() => runApp(const MainApp());

class MainApp extends StatefulWidget {
  const MainApp({super.key});

  @override
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  final weekdays = [2, 3, 4, 5, 6];
  final weekCount = 100;
  late DateTime startDate;
  late WeeklyTabController controller;

  @override
  void initState() {
    super.initState();
    startDate = WeeklyTabNavigator.calcSafeDate(DateTime.now(), weekdays);
    controller = WeeklyTabController(position: startDate);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.red)),
      home: Scaffold(
        backgroundColor: Colors.white,
        body: SafeArea(
          child: Column(
            children: [
              Expanded(
                child: WeeklyTabNavigator(
                  controller: controller,
                  weekdays: weekdays,
                  weekCount: weekCount,
                  tabBuilder: (context, date) => _buildTab(context, date),
                  pageBuilder: (context, date) => _buildPage(context, date),
                  onTabScrolled: (value) => debugPrint('onTabScrolled: $value'),
                  onTabChanged: (value) => debugPrint('onTabChanged: $value'),
                  onPageChanged: (value) => debugPrint('onPageChanged: $value'),
                ),
              ),
              const SizedBox(height: 24),
              FilledButton(
                onPressed: () => controller.animateTo(startDate),
                child: const Text('Reset Position'),
              ),
              const SizedBox(height: 200),
            ],
          ),
        ),
      ),
    );
  }

  Widget _buildTab(BuildContext context, DateTime date) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text(DateFormat('E').format(date).toUpperCase()),
        const SizedBox(height: 4),
        Text(date.day.toString()),
      ],
    );
  }

  Widget _buildPage(BuildContext context, DateTime date) {
    return Card(
      margin: const EdgeInsets.all(24),
      child: Center(
        child: Text(
          DateFormat.yMMMMd().format(date),
          style: Theme.of(context).textTheme.titleLarge,
        ),
      ),
    );
  }
}
8
likes
0
points
26
downloads

Publisher

unverified uploader

Weekly Downloads

Customizable TabBar component with integrated TabView that displays weekdays and allows for infinite scrolling by week.

Homepage

Topics

#scrollable #tabs #weekdays #calendar #navigation

License

unknown (license)

Dependencies

flutter, intl

More

Packages that depend on weekly_tab_pager