apptomate_custom_wrap 0.0.1 copy "apptomate_custom_wrap: ^0.0.1" to clipboard
apptomate_custom_wrap: ^0.0.1 copied to clipboard

An enhanced version of Flutter's Wrap widget with additional layout control and debugging capabilities.

example/lib/main.dart

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

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

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const CustomWrapWidget(),
    );
  }
}

/// Demo widget showcasing the [CustomWrap] capabilities.
class CustomWrapWidget extends StatelessWidget {
  const CustomWrapWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Custom Wrap'),
        centerTitle: true,
      ),
      body: SingleChildScrollView(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              _buildDemoSection(
                title: 'Basic Wrap',
                child: CustomWrap(
                  spacing: 12,
                  runSpacing: 12,
                  alignment: WrapAlignment.center,
                  children: _generateChips(10),
                ),
              ),
              const SizedBox(height: 24),
              _buildDemoSection(
                title: 'Vertical Wrap',
                child: CustomWrap(
                  direction: Axis.vertical,
                  spacing: 8,
                  runSpacing: 8,
                  children: _generateChips(15),
                ),
              ),
              const SizedBox(height: 24),
              _buildDemoSection(
                title: 'Max Lines (3)',
                child: CustomWrap(
                  maxLines: 3,
                  spacing: 12,
                  runSpacing: 12,
                  children: _generateChips(20),
                ),
              ),
              const SizedBox(height: 24),
              _buildDemoSection(
                title: 'Debug Mode',
                child: CustomWrap(
                  debugPaint: true,
                  spacing: 12,
                  runSpacing: 12,
                  children: _generateChips(8),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

  Widget _buildDemoSection({required String title, required Widget child}) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(
          title,
          style: const TextStyle(
            fontSize: 16,
            fontWeight: FontWeight.bold,
            color: Colors.blueGrey,
          ),
        ),
        const SizedBox(height: 8),
        child,
      ],
    );
  }

  List<Widget> _generateChips(int count) {
    final colors = [
      Colors.blue[100]!,
      Colors.green[100]!,
      Colors.orange[100]!,
      Colors.purple[100]!,
      Colors.red[100]!,
      Colors.teal[100]!,
    ];

    return List.generate(
      count,
          (index) => Chip(
        label: Text('Item ${index + 1}'),
        backgroundColor: colors[index % colors.length],
        side: BorderSide.none,
        elevation: 1,
        padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(16),
        ),
      ),
    );
  }
}
0
likes
160
points
37
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

An enhanced version of Flutter's Wrap widget with additional layout control and debugging capabilities.

Homepage

License

MIT (license)

Dependencies

flutter

More

Packages that depend on apptomate_custom_wrap