Skip to content

ShaderMask is broken and messes up layout, AppBar rendered in the middle of the screen #20859

@sir-boformer

Description

@sir-boformer

It seems like there is a bug in the engine in SceneBuilder.pushShaderMask or SceneBuilder.pop that causes this.

This makes ShaderMask unusable.

Example code (taken from the ShaderMask docs):

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Playground',
      home: TestPage(),
    );
  }
}

class TestPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title: Text('Test'),
        backgroundColor: Colors.blue.withOpacity(0.5),
      ),
      body: Center(
        child: ShaderMask(
          shaderCallback: (Rect bounds) {
            return new RadialGradient(
              center: Alignment.topLeft,
              radius: 1.0,
              colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],
              tileMode: TileMode.mirror,
            ).createShader(bounds);
          },
          child: const Text('I’m burning the memories'),
        ),
      ),
    );
  }
}

Flutter version: Latest master

Metadata

Metadata

Assignees

No one assigned

    Labels

    c: regressionIt was better in the past than it is nowengineflutter/engine related. See also e: labels.frameworkflutter/packages/flutter repository. See also f: labels.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions