shitead 0.0.5 copy "shitead: ^0.0.5" to clipboard
shitead: ^0.0.5 copied to clipboard

A modern Flutter package for building interactive passenger seat layouts with driver seat, selection functionality, and detailed seat information modals. Perfect for bus booking, cinema reservations, [...]

Shitead - Flutter Seat Layout Package #

A modern Flutter package for building interactive passenger seat layouts with driver seat, selection functionality, and detailed seat information modals.

Features #

  • πŸš— Driver Seat Support: Optional driver seat with distinct styling
  • πŸͺ‘ Customizable Layout: Configure number of seats, seats per row, and layout
  • 🎯 Interactive Selection: Touch seats to select/deselect with visual feedback
  • πŸ“± Modern UI: Material Design 3 compliant with smooth animations
  • πŸ“‹ Detailed Info Modals: Bottom sheet modals showing seat information
  • πŸ”§ Flexible Configuration: Pre-booked seats, unavailable seats, custom metadata
  • 🎨 Themeable: Respects app's color scheme and theme
  • βœ… Well Tested: Comprehensive test coverage

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  shitead: ^0.0.1

Then run:

flutter pub get

Usage #

Basic Example #

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

class SeatSelectionScreen extends StatefulWidget {
  @override
  _SeatSelectionScreenState createState() => _SeatSelectionScreenState();
}

class _SeatSelectionScreenState extends State<SeatSelectionScreen> {
  List<Seat> selectedSeats = [];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Select Seats')),
      body: Padding(
        padding: EdgeInsets.all(16),
        child: SeatLayout(
          numberOfSeats: 20,
          seatsPerRow: 4,
          showDriverSeat: true,
          onSeatSelectionChanged: (seats) {
            setState(() {
              selectedSeats = seats;
            });
          },
        ),
      ),
    );
  }
}

Advanced Configuration #

SeatLayout(
  numberOfSeats: 30,
  seatsPerRow: 4,
  showDriverSeat: true,
  allowMultipleSelection: true,
  seatSize: 55,
  seatSpacing: 10,

  // Pre-select some seats
  initialSelectedSeats: ['seat_5', 'seat_6'],

  // Mark some seats as booked
  bookedSeats: ['seat_1', 'seat_15', 'seat_20'],

  // Mark some seats as unavailable
  unavailableSeats: ['seat_10'],

  // Add passenger names
  passengerNames: {
    'driver': 'John Doe',
    'seat_1': 'Alice Smith',
    'seat_15': 'Bob Johnson',
  },

  // Add custom metadata
  seatMetadata: {
    'seat_1': {
      'booking_id': 'BK001',
      'price': 50.0,
      'meal_preference': 'Vegetarian'
    },
    'seat_10': {
      'reason': 'Maintenance required',
      'estimated_fix': '2024-01-15'
    },
  },

  onSeatSelectionChanged: (selectedSeats) {
    print('Selected seats: ${selectedSeats.map((s) => s.seatNumber).join(', ')}');
  },
)

Seat Status Types #

  • Available: Open for selection
  • Selected: Currently selected by user
  • Booked: Already taken by another passenger
  • Unavailable: Out of order or maintenance
  • Driver: Special driver seat

Customization Options #

SeatLayout Properties #

Property Type Default Description
numberOfSeats int Required Number of passenger seats
seatsPerRow int 4 Seats per row in layout
showDriverSeat bool true Whether to show driver seat
allowMultipleSelection bool true Allow selecting multiple seats
seatSize double 50 Size of individual seats
seatSpacing double 8 Spacing between seats
initialSelectedSeats List<String>? null Initially selected seat IDs
bookedSeats List<String>? null Pre-booked seat IDs
unavailableSeats List<String>? null Unavailable seat IDs
passengerNames Map<String, String>? null Custom passenger names
seatMetadata Map<String, Map<String, dynamic>>? null Custom seat metadata
onSeatSelectionChanged Function(List<Seat>)? null Selection change callback

Seat Model Properties #

Property Type Description
id String Unique seat identifier
seatNumber String Display seat number
status SeatStatus Current seat status
row int Row position
column int Column position
isDriver bool Whether this is driver seat
passengerName String? Passenger name (if any)
metadata Map<String, dynamic>? Additional seat data

Screenshots #

Example App #

Check out the example app in the example/ directory for a complete implementation with configuration options.

cd example
flutter run

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog #

See CHANGELOG.md for a list of changes.

2
likes
145
points
30
downloads

Publisher

verified publisherprasannapoudel1.com.np

Weekly Downloads

A modern Flutter package for building interactive passenger seat layouts with driver seat, selection functionality, and detailed seat information modals. Perfect for bus booking, cinema reservations, and airline seat selection apps.

Repository (GitHub)
View/report issues
Contributing

Topics

#ui #seat-layout #booking #selection #widget

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_svg

More

Packages that depend on shitead