selection_build 1.0.1 copy "selection_build: ^1.0.1" to clipboard
selection_build: ^1.0.1 copied to clipboard

A library that provides custom basic functionality for radio buttons or checkboxes

example/lib/main.dart

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

enum Data {
  a,
  b,
  c,
  d;

  @override
  toString() {
    switch (this) {
      case a:
        return 'A';
      case b:
        return 'B';
      case c:
        return 'C';
      case d:
        return 'D';
    }
  }
}

class SingleSelectionData extends SingleSelection<Data> {
  const SingleSelectionData({
    super.key,
    required super.data,
    required super.onChanged,
    super.layout,
  });

  @override
  Widget build(Data item, bool isSelected) => Container(
    color: Colors.grey.shade300,
    child: Row(
      mainAxisSize: MainAxisSize.min,
      children: [
        Icon(
          isSelected ? Icons.check_circle_outline : Icons.circle_outlined,
        ),
        Text(item.toString()),
      ],
    ),
  );
}

class MultipleSelectionData extends MultipleSelection<Data> {
  const MultipleSelectionData({
    super.key,
    required super.data,
    required super.onChanged,
    super.layout,
  });

  @override
  Widget build(Data item, bool isSelected) => Container(
    color: Colors.grey.shade300,
    child: Row(
      mainAxisSize: MainAxisSize.min,
      children: [
        Icon(
          isSelected
              ? Icons.check_box_outlined
              : Icons.check_box_outline_blank,
        ),
        Text(item.toString()),
      ],
    ),
  );
}

void main() => runApp(MaterialApp(
  debugShowCheckedModeBanner: false,
  home: Scaffold(
    body: SafeArea(
      child: SingleChildScrollView(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            SingleSelectionData(
              data: Data.values,
              onChanged: (item) {},
            ),
            const SizedBox(height: 50),
            SingleSelectionData(
              data: Data.values,
              onChanged: (item) {},
              layout: SelectionLayout.row,
            ),
            const SizedBox(height: 50),
            SingleSelectionData(
              data: Data.values,
              onChanged: (item) {},
              layout: SelectionLayout.column,
            ),
            const SizedBox(height: 50),
            MultipleSelectionData(
              data: Data.values,
              onChanged: (item) {},
            ),
            const SizedBox(height: 50),
            MultipleSelectionData(
              data: Data.values,
              onChanged: (item) {},
              layout: SelectionLayout.row,
            ),
            const SizedBox(height: 50),
            MultipleSelectionData(
              data: Data.values,
              onChanged: (item) {},
              layout: SelectionLayout.column,
            ),
          ],
        ),
      ),
    ),
  ),
));
copied to clipboard
1
likes
160
points
150
downloads

Publisher

verified publisherhunghv.com

Weekly Downloads

2024.09.23 - 2025.04.07

A library that provides custom basic functionality for radio buttons or checkboxes

Repository (GitHub)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on selection_build