From 5917d3515c3ef9053bbffd1b2f87d66941b4619e Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Tue, 28 Feb 2023 11:25:09 +1100 Subject: [PATCH] `simple_shader`: Utilise `flutter_shaders` (#1673) --- simple_shader/lib/main.dart | 43 +++++++++++-------------------------- simple_shader/pubspec.yaml | 1 + 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/simple_shader/lib/main.dart b/simple_shader/lib/main.dart index c63bdf593..2ed46620e 100644 --- a/simple_shader/lib/main.dart +++ b/simple_shader/lib/main.dart @@ -1,6 +1,7 @@ import 'dart:ui' as ui; import 'package:flutter/material.dart'; +import 'package:flutter_shaders/flutter_shaders.dart'; void main() { runApp(const MyApp()); @@ -22,44 +23,26 @@ class MyApp extends StatelessWidget { } } -class MyHomePage extends StatefulWidget { +class MyHomePage extends StatelessWidget { const MyHomePage({super.key}); - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - late Future program; - - @override - void initState() { - super.initState(); - program = ui.FragmentProgram.fromAsset('shaders/simple.frag'); - } - @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Simple Shader Demo'), ), - body: FutureBuilder( - future: program, - builder: (context, snapshot) { - if (snapshot.hasData) { - return CustomPaint( - size: MediaQuery.of(context).size, - painter: ShaderPainter( - shader: snapshot.data!.fragmentShader(), - ), - ); - } - if (snapshot.hasError) { - return Center(child: Text('${snapshot.error}')); - } - return const Center(child: CircularProgressIndicator()); - }, + body: ShaderBuilder( + assetKey: 'shaders/simple.frag', + (context, shader, child) => CustomPaint( + size: MediaQuery.of(context).size, + painter: ShaderPainter( + shader: shader, + ), + ), + child: const Center( + child: CircularProgressIndicator(), + ), ), ); } diff --git a/simple_shader/pubspec.yaml b/simple_shader/pubspec.yaml index cfb36c819..3004c1717 100644 --- a/simple_shader/pubspec.yaml +++ b/simple_shader/pubspec.yaml @@ -9,6 +9,7 @@ environment: dependencies: flutter: sdk: flutter + flutter_shaders: ^0.0.6 dev_dependencies: analysis_defaults: