torn_ticket 0.1.0 copy "torn_ticket: ^0.1.0" to clipboard
torn_ticket: ^0.1.0 copied to clipboard

A fully customizable torn ticket widget for Flutter applications.

example/lib/main.dart

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Torn Ticket Example',
      home: TicketExampleScreen(),
    );
  }
}

class TicketExampleScreen extends StatelessWidget {
  const TicketExampleScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.white,
        scrolledUnderElevation: 0,
        title: const Text(
          'TORN TICKET EXAMPLES',
          style: TextStyle(
            fontSize: 20,
            fontWeight: FontWeight.bold,
          ),
        ),
        centerTitle: true,
      ),
      body: SingleChildScrollView(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              _header('Grid Example'),
              const SizedBox(height: 10),
              _buildGridExample(),
              const SizedBox(height: 20),
              _header('List Example'),
              const SizedBox(height: 10),
              _buildListExample(),
              _header('Single Ticket Example'),
              const SizedBox(height: 10),
              _buildSingleTicketExample(),
            ],
          ),
        ),
      ),
    );
  }

  Text _header(String text) {
    return Text(
      text,
      style: const TextStyle(
        fontSize: 20,
        fontWeight: FontWeight.bold,
      ),
    );
  }

  Widget _buildGridExample() {
    return GridView.builder(
      gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 2,
        mainAxisSpacing: 16,
        crossAxisSpacing: 16,
        childAspectRatio: 0.8,
      ),
      itemCount: 4,
      shrinkWrap: true,
      padding: EdgeInsets.zero,
      physics: const NeverScrollableScrollPhysics(),
      itemBuilder: (BuildContext context, int index) {
        return TornTicket(
          elevation: 5,
          shadowColor: Colors.black,
          shadowOffset: const Offset(0, 0.8),
          margin: EdgeInsets.zero,
          child: Center(child: Text('Coupon #${index + 1}')),
        );
      },
    );
  }

  Widget _buildListExample() {
    return ListView.builder(
      itemCount: 3,
      shrinkWrap: true,
      physics: const NeverScrollableScrollPhysics(),
      itemBuilder: (context, index) {
        return Padding(
          padding: const EdgeInsets.symmetric(vertical: 8.0),
          child: TornTicket(
            borderRadius: 15.0,
            cutoutRadius: 10.0,
            cutoutHeight: 15.0,
            cutoutPosition: 0.4,
            bottomEndSpacing: 5.0,
            bottomArcSpacing: 10.0,
            elevation: 5.0,
            shadowColor: Colors.black,
            margin: const EdgeInsets.symmetric(horizontal: 10),
            child: Center(child: Text('Ticket #${index + 1}')),
          ),
        );
      },
    );
  }

  Widget _buildSingleTicketExample() {
    return const Center(
      child: TornTicket(
        borderRadius: 15.0,
        cutoutRadius: 10.0,
        cutoutHeight: 15.0,
        cutoutPosition: 0.4,
        bottomEndSpacing: 5.0,
        bottomArcSpacing: 10.0,
        elevation: 5.0,
        hasShadow: true,
        shadowColor: Colors.black,
        margin: EdgeInsets.symmetric(horizontal: 10),
        shadowOffset: Offset(5, 2),
        child: Center(
          child: Text('Ticket #1'),
        ),
      ),
    );
  }
}
8
likes
150
points
11
downloads

Publisher

unverified uploader

Weekly Downloads

A fully customizable torn ticket widget for Flutter applications.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on torn_ticket