Skip to content

[Impeller] TextDecoration dashed and dotted are rendering as solid. #126673

Closed
flutter/engine
#45041
@ronjb

Description

@ronjb

Is there an existing issue for this?

Steps to reproduce

The code Text('underline, dotted', TextStyle(decoration: TextDecoration.underline, decorationStyle: TextDecorationStyle.dotted)) renders like this:

Screenshot 2023-05-12 at 8 19 01 AM

with a solid line, when it should render like this:

Screenshot 2023-05-12 at 8 19 16 AM

Expected results

I tried all the decoration styles for underline and expected this (which is what I see without Impeller):

Screenshot 2023-05-12 at 8 16 59 AM

Actual results

But got this with Impeller:

Screenshot 2023-05-12 at 8 09 20 AM

Code sample

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Impeller Text Decoration Test'),
      ),
      body: ListView(
        children: const <Widget>[
          DecoratedText(TextDecoration.underline, TextDecorationStyle.solid),
          DecoratedText(TextDecoration.underline, TextDecorationStyle.dashed),
          DecoratedText(TextDecoration.underline, TextDecorationStyle.dotted),
          DecoratedText(TextDecoration.underline, TextDecorationStyle.double),
          DecoratedText(TextDecoration.underline, TextDecorationStyle.wavy),
        ],
      ),
    );
  }
}

class DecoratedText extends StatelessWidget {
  const DecoratedText(this.decoration, this.decorationStyle, {super.key});

  final TextDecoration decoration;
  final TextDecorationStyle decorationStyle;

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text(
        '${decoration.desc}, ${decorationStyle.desc}',
        style: TextStyle(
          fontSize: 22,
          decoration: decoration,
          decorationStyle: decorationStyle,
        ),
      ),
    );
  }
}

extension on Object {
  String get desc => toString().split('.').last;
}

Screenshots or Video

Screenshots / Video demonstration Screenshot 2023-05-12 at 8 09 20 AM

Logs

Logs
[Paste your logs here]

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.10.0, on macOS 13.3.1 22E772610a darwin-arm64, locale en-US)
    • Flutter version 3.10.0 on channel stable at /Users/ronbooth/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 84a1e904f4 (3 days ago), 2023-05-09 07:41:44 -0700
    • Engine revision d44b5a94c9
    • Dart version 3.0.0
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/ronbooth/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] VS Code (version 1.78.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.64.0

[✓] Connected device (3 available)
    • iPad mini (6th generation) (mobile) • 46CD1EBD-35A0-466C-B2BF-2F36D4A57344 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)                     • macos                                • darwin-arm64   • macOS 13.3.1
      22E772610a darwin-arm64
    • Chrome (web)                        • chrome                               • web-javascript • Google Chrome
      113.0.5672.92

[✓] Network resources
    • All expected network resources are available.```

</details>

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work lista: fidelityMatching the OEM platforms bettere: impellerImpeller rendering backend issues and features requestsengineflutter/engine repository. See also e: labels.found in release: 3.10Found to occur in 3.10team-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions