Skip to content

[Impeller] IconButton.outlined border appears visually broken / clipped on certain devices #182708

Description

@Hladenkyi

Steps to reproduce

Run the following minimal reproduction sample (standard Flutter IconButton gallery example)

Expected results

All IconButton variants render with a clean, fully closed circular border as per Material 3 specification.

Actual results

The circular border of IconButton.outlined appears visually broken — the outline is incomplete or clipped, making the button look malformed. This issue is only reproducible with Impeller enabled (default renderer on Android). Running with --no-enable-impeller resolves the issue completely, which suggests this is an Impeller rendering bug.

Code sample

Code sample
import 'package:flutter/material.dart';

/// Flutter code sample for [IconButton].

void main() {
  runApp(const IconButtonApp());
}

class IconButtonApp extends StatelessWidget {
  const IconButtonApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(colorSchemeSeed: const Color(0xff6750a4)),
      title: 'Icon Button Types',
      home: const Scaffold(body: ButtonTypesExample()),
    );
  }
}

class ButtonTypesExample extends StatelessWidget {
  const ButtonTypesExample({super.key});

  @override
  Widget build(BuildContext context) {
    return const Padding(
      padding: EdgeInsets.all(4.0),
      child: Row(
        children: <Widget>[
          Spacer(),
          ButtonTypesGroup(enabled: true),
          ButtonTypesGroup(enabled: false),
          Spacer(),
        ],
      ),
    );
  }
}

class ButtonTypesGroup extends StatelessWidget {
  const ButtonTypesGroup({super.key, required this.enabled});

  final bool enabled;

  @override
  Widget build(BuildContext context) {
    final VoidCallback? onPressed = enabled ? () {} : null;

    return Padding(
      padding: const EdgeInsets.all(4.0),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        spacing: 10,
        children: <Widget>[
          IconButton(
            icon: const Icon(Icons.filter_drama),
            onPressed: onPressed,
          ),

          // Filled icon button
          IconButton.filled(
            onPressed: onPressed,
            icon: const Icon(Icons.filter_drama),
          ),

          // Filled tonal icon button
          IconButton.filledTonal(
            onPressed: onPressed,
            icon: const Icon(Icons.filter_drama),
          ),

          // Outlined text button
          OutlinedButton(
            onPressed: onPressed,
            child: const Icon(Icons.filter_drama),
          ),

          // Outlined icon button
          IconButton.outlined(
            onPressed: onPressed,
            icon: const Icon(Icons.filter_drama),
          ),
        ],
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration Image

Logs

Logs
[Paste your logs here]

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.41.2, on Ubuntu 24.10 6.11.0-29-generic, locale uk_UA.UTF-8) [57ms]
    • Flutter version 3.41.2 on channel stable at 
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 90673a4eef (3 дні тому), 2026-02-18 13:54:59 -0800
    • Engine revision 6c0baaebf7
    • Dart version 3.11.0
    • DevTools version 2.54.1
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging,
      enable-uiscene-migration

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work listcp: stablecherry pick this pull request to stable release candidate branche: impellerImpeller rendering backend issues and features requestshas reproducible stepsThe issue has been confirmed reproducible and is ready to work onteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions