Yin and yang: Difference between revisions

→‎{{header|Dart}}: added Flutter (without CustomPaint)
m (→‎SVG (path evenodd): refactoring)
(→‎{{header|Dart}}: added Flutter (without CustomPaint))
Line 2,185:
@override
bool shouldRepaint(CustomPainter oldDelegate) => true;
}
</syntaxhighlight>
===Flutter (without CustomPaint)===
[https://dartpad.dev/?id=e0502d089330620c9866ef5fc2310042 Run online in DartPad]
<syntaxhighlight lang="dart">import 'package:flutter/material.dart';
 
const colors = [Colors.black, Colors.white];
 
Container cR(int iColor, double radius, {Widget? child, Clip clip = Clip.none}) => Container(
width: radius * 2,
height: radius * 2,
decoration: ShapeDecoration(color: colors[iColor], shape: const CircleBorder()),
clipBehavior: clip,
child: Center(child: child),
);
 
Container yinYang(double r, [double th = 1.0]) => cR(0, r + th,
clip: Clip.hardEdge,
child: cR(1, r,
child: Stack(alignment: Alignment.center, children: [
Container(color: colors[0], margin: EdgeInsets.only(left: r)),
Column(children: List.generate(2, (i) => cR(1 - i, r / 2, child: cR(i, r / 6))))
])));
 
void main() => runApp(const MainApp());
 
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) => Container(
color: colors[1],
padding: const EdgeInsets.all(10),
child: Row(
textDirection: TextDirection.ltr,
crossAxisAlignment: CrossAxisAlignment.start,
children: [yinYang(50), yinYang(20)]));
}
</syntaxhighlight>
106

edits