1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 13:58:47 +00:00

simple_shader: Utilise flutter_shaders (#1673)

This commit is contained in:
Brett Morgan
2023-02-28 11:25:09 +11:00
committed by GitHub
parent 64d10ca175
commit 5917d3515c
2 changed files with 14 additions and 30 deletions

View File

@@ -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<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
late Future<ui.FragmentProgram> 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<ui.FragmentProgram>(
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(),
),
),
);
}