Created
August 9, 2021 17:43
-
-
Save jonahwilliams/d7b605e0cad7ea2cf0b02ec3d336ea75 to your computer and use it in GitHub Desktop.
constantly repainting RO
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
import 'package:flutter/rendering.dart'; | |
import 'package:flutter/scheduler.dart'; | |
import 'package:flutter_svg/svg.dart'; | |
void main() { | |
runApp(const MaterialApp(home: Scaffold(body: Example()))); | |
} | |
class Example extends StatefulWidget { | |
const Example({ Key? key }) : super(key: key); | |
@override | |
_ExampleState createState() => _ExampleState(); | |
} | |
class _ExampleState extends State<Example> { | |
@override | |
void initState() { | |
super.initState(); | |
SchedulerBinding.instance!.addPostFrameCallback(_extraPaint); | |
} | |
void _extraPaint(Duration _) { | |
setState(() {}); | |
SchedulerBinding.instance!.addPostFrameCallback(_extraPaint); | |
} | |
@override | |
Widget build(BuildContext context) { | |
return Container( | |
child: ExtraPaintWidget(child: SvgPicture.asset('assets/wikimedia/Ghostscript_Tiger.svg')), | |
); | |
} | |
} | |
class ExtraPaintWidget extends SingleChildRenderObjectWidget { | |
ExtraPaintWidget({required Widget child}) : super(child: child); | |
@override | |
RenderObject createRenderObject(BuildContext context) { | |
return ExtraPaintRO(); | |
} | |
@override | |
void updateRenderObject(BuildContext context, covariant ExtraPaintRO renderObject) { | |
renderObject.dirty = 2; | |
} | |
} | |
class ExtraPaintRO extends RenderProxyBox { | |
set dirty(int value) { | |
markNeedsPaint(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment