import 'package:flutter/material.dart'; import 'package:max_print_plus/print/bluetooth_printer_screen.dart'; import 'package:max_print_plus/print/network_printer_screen.dart'; import 'package:max_print_plus/print/usb_printer_screen.dart'; import 'tab_bar.dart'; enum HistoryTabData { reservation, dinein, waitinglist, pickup, delivery } class MaxPrintArgs { final int _index = 0; HistoryTabData initialTab; MaxPrintArgs({required this.initialTab}); int get initialIndex => mapTabDataToIndex(); int mapTabDataToIndex() { switch (initialTab) { case HistoryTabData.reservation: return 0; case HistoryTabData.dinein: return 1; case HistoryTabData.waitinglist: return 2; case HistoryTabData.pickup: return 3; case HistoryTabData.delivery: return 4; default: return 0; } } } class MaxPrint extends StatefulWidget { MaxPrint({ Key? key, }) : super(key: key); @override State createState() => _MaxPrintState(); } class _MaxPrintState extends State with TickerProviderStateMixin { String? uid; bool? isLogin; late final TabController _tabController; @override void initState() { _tabController = TabController(length: 3, vsync: this); _tabController.addListener(_handleTabSelection); super.initState(); } int tabIndex = 0; void _handleTabSelection() { setState(() { tabIndex = _tabController.index; print('Tab index: $tabIndex'); }); } @override Widget build(BuildContext context) { return SafeArea( child: DefaultTabController( length: 3, child: Scaffold( backgroundColor: Color(0xFFFAFAFA), appBar: AppBar( title: Text('Print'), bottom: CustomTabBar( tabController: _tabController, tabs: [ tabTitle('Bluetooth'), tabTitle('WiFi'), tabTitle('USB'), // tabTitle('Ongoing'), // tabTitle('Completed'), ], ), ), body: Column( children: [ Expanded( child: TabBarView( controller: _tabController, children: [ BluetoothPrinterScreen(), NetWorkPrinterScreen(), USBPrinterScreen() ], ), ), ], )), )); } } Tab tabTitle(String title) { return Tab( icon: Text( title, style: const TextStyle( // color: Pallete.primary, fontSize: 12.0, fontWeight: FontWeight.w600, overflow: TextOverflow.ellipsis, letterSpacing: 0.1), maxLines: 1, ), ); }