briks.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'package:flutter/material.dart';
  2. const colorNormal = Colors.black87;
  3. const colorNull = Colors.black12;
  4. const colorHighlight = Color(0xFF560000);
  5. class BrikSize extends InheritedWidget {
  6. const BrikSize({
  7. Key? key,
  8. required this.size,
  9. required Widget child,
  10. }) : super(key: key, child: child);
  11. final Size size;
  12. static BrikSize of(BuildContext context) {
  13. final brikSize = context.dependOnInheritedWidgetOfExactType<BrikSize>();
  14. assert(brikSize != null, "....");
  15. return brikSize!;
  16. }
  17. @override
  18. bool updateShouldNotify(BrikSize old) {
  19. return old.size != size;
  20. }
  21. }
  22. ///the basic brik for game panel
  23. class Brik extends StatelessWidget {
  24. final Color color;
  25. const Brik._({Key? key, required this.color}) : super(key: key);
  26. const Brik.normal() : this._(color: colorNormal);
  27. const Brik.empty() : this._(color: colorNull);
  28. const Brik.highlight() : this._(color: colorHighlight);
  29. @override
  30. Widget build(BuildContext context) {
  31. final width = BrikSize.of(context).size.width;
  32. return SizedBox.fromSize(
  33. size: BrikSize.of(context).size,
  34. child: Container(
  35. margin: EdgeInsets.all(0.05 * width),
  36. padding: EdgeInsets.all(0.1 * width),
  37. decoration: BoxDecoration(
  38. border: Border.all(width: 0.10 * width, color: color)),
  39. child: Container(
  40. color: color,
  41. ),
  42. ),
  43. );
  44. }
  45. }