1+ using System . Collections . Generic ;
2+ using Unity . UIWidgets . foundation ;
3+ using Unity . UIWidgets . ui ;
4+
5+ namespace Unity . UIWidgets . widgets
6+ {
7+ internal class _Placeholderpainter : AbstractCustomPainter
8+ {
9+ public _Placeholderpainter (
10+ Color color ,
11+ float strokeWidth = 0f
12+ )
13+ {
14+ this . color = color ;
15+ this . strokeWidth = strokeWidth ;
16+ }
17+
18+
19+ public readonly Color color ;
20+ public readonly float strokeWidth ;
21+
22+ public override void paint ( Canvas canvas , Size size )
23+ {
24+ Paint paint = new Paint ( ) ;
25+ paint . color = color ;
26+ paint . style = PaintingStyle . stroke ;
27+ paint . strokeWidth = strokeWidth ;
28+
29+ Rect rect = Offset . zero & size ;
30+ Path path = new Path ( ) ;
31+ path . addRect ( rect ) ;
32+ path . addPolygon ( new List < Offset > { rect . topRight , rect . bottomLeft } , false ) ;
33+ path . addPolygon ( new List < Offset > { rect . topLeft , rect . bottomRight } , false ) ;
34+
35+ canvas . drawPath ( path , paint ) ;
36+ return ;
37+ }
38+
39+ public override bool shouldRepaint ( CustomPainter oldPainter )
40+ {
41+ return ( ( _Placeholderpainter ) oldPainter ) . color != color ||
42+ ( ( _Placeholderpainter ) oldPainter ) . strokeWidth != strokeWidth ;
43+ }
44+
45+ public override bool ? hitTest ( Offset position )
46+ {
47+ return false ;
48+ }
49+ }
50+
51+ public class Placeholder : StatelessWidget
52+ {
53+ public Placeholder (
54+ Key key = null ,
55+ Color color = null ,
56+ float strokeWidth = 2.0f ,
57+ float fallbackWidth = 400.0f ,
58+ float fallbackHeight = 400.0f
59+ ) : base ( key )
60+ {
61+ this . color = color ?? new Color ( 0xFF455A64 ) ;
62+ this . strokeWidth = strokeWidth ;
63+ this . fallbackWidth = fallbackWidth ;
64+ this . fallbackHeight = fallbackHeight ;
65+ }
66+
67+ public readonly Color color ;
68+ public readonly float strokeWidth ;
69+ public readonly float fallbackWidth ;
70+ public readonly float fallbackHeight ;
71+
72+ public override Widget build ( BuildContext context )
73+ {
74+ return new LimitedBox (
75+ maxWidth : fallbackWidth ,
76+ maxHeight : fallbackHeight ,
77+ child : new CustomPaint (
78+ size : Size . infinite ,
79+ foregroundPainter : new _Placeholderpainter (
80+ color : color ,
81+ strokeWidth : strokeWidth
82+ )
83+ )
84+ ) ;
85+ }
86+ }
87+ }
0 commit comments