Skip to content

[Impeller] text is transformed incorrectly #117428

@gaodeng

Description

@gaodeng

Steps to Reproduce

  1. Execute flutter run on the code sample
  2. Please carefully examine number 19 and the differences in rendering after the impeller has been turned on. The closer the numbers are to the edge, the more severe the misalignment is.

Expected results:

Simulator Screen Shot - iPad Pro (12 9-inch) (6th generation) - 2022-12-21 at 10 13 38

Actual results:

208805132-a5ab0747-afcc-4adb-b084-d6ff2232efb2

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(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late final FixedExtentScrollController _controller =
      FixedExtentScrollController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(18.0),
        child: SizedBox(
          height: 200,
          child: Center(
            child: ListWheelScrollViewX(
              key: const Key("scroll"),
              controller: _controller,
              physics: const FixedExtentScrollPhysics(),
              onSelectedItemChanged: (p0) {},
              scrollDirection: Axis.horizontal,
              itemExtent: 280,
              builder: (context, index) {
                index = (index) % (61);
                return Column(
                  children: [
                    Text(
                      "$index",
                      style: const TextStyle(fontSize: 60),
                    )
                  ],
                );
              },
            ),
          ),
        ),
      ),
    );
  }
}

class ListWheelScrollViewX extends StatelessWidget {
  final Widget Function(BuildContext, int) builder;
  final Axis scrollDirection;
  final ScrollPhysics physics;
  final FixedExtentScrollController controller;
  final double itemExtent;
  final double diameterRatio;
  final void Function(int) onSelectedItemChanged;
  const ListWheelScrollViewX({
    required Key key,
    required this.builder,
    required this.itemExtent,
    required this.controller,
    required this.onSelectedItemChanged,
    this.scrollDirection = Axis.vertical,
    this.diameterRatio = 1.5,
    required this.physics,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return RotatedBox(
      quarterTurns: scrollDirection == Axis.horizontal ? 3 : 0,
      child: ListWheelScrollView.useDelegate(
        squeeze: 3.0,
        useMagnifier: false,
        perspective: 0.003,
        offAxisFraction: 0.35,
        onSelectedItemChanged: onSelectedItemChanged,
        controller: controller,
        itemExtent: itemExtent,
        diameterRatio: diameterRatio,
        physics: physics,
        childDelegate: ListWheelChildBuilderDelegate(
          builder: (context, index) {
            return RotatedBox(
              quarterTurns: scrollDirection == Axis.horizontal ? 1 : 0,
              child: builder(context, index),
            );
          },
        ),
      ),
    );
  }
}

Logs
[✓] Flutter (Channel master, 3.7.0-13.0.pre.17, on macOS 13.1 22C65 darwin-arm64, locale en-JP)
    • Flutter version 3.7.0-13.0.pre.17 on channel master at /Users/gaodeng/flutter_sdks/flutter_stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision cd0f15a770 (76 minutes ago), 2022-12-20 17:01:04 -0800
    • Engine revision 75d75575d0
    • Dart version 3.0.0 (build 3.0.0-39.0.dev)
    • DevTools version 2.20.0
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/gaodeng/Library/Android/sdk
    • Platform android-33, build-tools 32.0.0
    • ANDROID_HOME = /Users/gaodeng/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2021.3)
    • 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.13+0-b1751.21-8125866)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.1.3)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • 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

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

[✓] Connected device (3 available)
    • iPad Pro (12.9-inch) (6th generation) (mobile) • 0F46EBCE-1224-4790-91B7-F31697771503 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator)
    • macOS (desktop)                                • macos                                • darwin-arm64   • macOS
      13.1 22C65 darwin-arm64
    • Chrome (web)                                   • chrome                               • web-javascript • Google
      Chrome 108.0.5359.124

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work lista: typographyText rendering, possibly libtxte: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.found in release: 3.7Found to occur in 3.7has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-iosiOS applications specificallyr: fixedIssue is closed as already fixed in a newer version

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions