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: