clipper2 0.0.3
clipper2: ^0.0.3 copied to clipboard
The clipper2 library performs intersection, union, difference and xor boolean operations on both simple and complex polygons. It also performs polygon offsetting.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'clipper_page.dart';
import 'minkowski_page.dart';
import 'offset_page.dart';
void main() {
runApp(const ClipperApp());
}
class ClipperApp extends StatelessWidget {
const ClipperApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Clipper2 Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
var _tab = _Tab.clipper;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text('Clipper2 Demo'),
),
body: Column(
children: [
Expanded(
child: switch (_tab) {
_Tab.clipper => const ClipperPage(),
_Tab.offset => const OffsetPage(),
_Tab.minkowski => const MinkowskiPage(),
},
),
NavigationBar(
selectedIndex: _tab.index,
onDestinationSelected:
(index) => setState(() => _tab = _Tab.values[index]),
destinations: [
NavigationDestination(
icon: const Icon(Icons.cut),
label: 'Clipper',
),
NavigationDestination(
icon: const Icon(Icons.expand),
label: 'Offset',
),
NavigationDestination(
icon: const Icon(Icons.star_border),
label: 'Minkowski',
),
],
),
],
),
);
}
}
enum _Tab { clipper, offset, minkowski }