Skip to content

[web] UnimplementedError when using SliderTheme #75495

@technolion

Description

@technolion

Steps to Reproduce

  1. Run flutter create --description "SliderThemeData UnimplementedError Web" --project-name slider_themedata_bug --platforms web,macos --org com.skalio.bug slider_themedata_bug.
  2. Update the file lib/main.dart as follows:
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Slider ThemeData bug Web',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'This works for macos but not for web'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  double _currentSliderValue = 1;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: SliderTheme(
          data: SliderThemeData(
            trackShape: CustomTrackShape(),
            activeTrackColor: Colors.red,
            inactiveTrackColor: Colors.grey,
            thumbColor: Colors.blue,
            activeTickMarkColor: Colors.white,
            inactiveTickMarkColor: Colors.white,
          ),
          child: ShaderMask(
            blendMode: BlendMode.modulate,
            shaderCallback: (Rect bounds) {
              return LinearGradient(
                colors: <Color>[Colors.blue[50], Colors.blue],
                begin: Alignment.centerLeft,
                end: Alignment.centerRight,
                tileMode: TileMode.clamp,
              ).createShader(bounds);
            },
            child: Slider(
              onChanged: (double value) {
                      setState(() {
                        _currentSliderValue = value;
                      });
                    },
              min: 1,
              max: 3,
              value: _currentSliderValue,
              divisions: 2,
            ),
          ),
        ),
    ),);
  }

}

/// A TrackShape that can be Used for a [Slider] to allow for a wider,
/// margin-less Slider.
class CustomTrackShape extends RoundedRectSliderTrackShape {
  double margin = 10;
  Rect getPreferredRect({
    @required RenderBox parentBox,
    Offset offset = Offset.zero,
    @required SliderThemeData sliderTheme,
    bool isEnabled = false,
    bool isDiscrete = false,
  }) {
    final double trackHeight = sliderTheme.trackHeight;
    final double trackLeft = offset.dx + margin;
    final double trackTop = offset.dy + (parentBox.size.height - trackHeight) / 2;
    final double trackWidth = parentBox.size.width - 2 * margin;
    return Rect.fromLTWH(trackLeft, trackTop, trackWidth, trackHeight);
  }
}
  1. Run example for web: flutter run -d chrome

Expected results: A nice slider styled with a SliderTheme

Actual results: Nothing is shown in the browser. Instead an UnimplementedError was thrown:

  1. Run example for macOS: flutter run -d macos - The slider example works on macOS!

When showing the Slider without the SliderTheme it works on web.

Please support SliderTheme for the web platform!

Logs
porcupine:slider_themedata_bug tom$ flutter run -d chrome --verbose
[  +71 ms] executing: [/usr/local/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +45 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +2 ms] a77388e670ad9860c0be0d249c9c832de719e6f2
[        ] executing: [/usr/local/flutter/] git tag --points-at a77388e670ad9860c0be0d249c9c832de719e6f2
[  +73 ms] Exit code 0 from: git tag --points-at a77388e670ad9860c0be0d249c9c832de719e6f2
[   +1 ms] executing: [/usr/local/flutter/] git describe --match *.*.* --long --tags a77388e670ad9860c0be0d249c9c832de719e6f2
[  +76 ms] Exit code 0 from: git describe --match *.*.* --long --tags a77388e670ad9860c0be0d249c9c832de719e6f2
[        ] 1.26.0-17.0.pre-210-ga77388e670
[  +43 ms] executing: [/usr/local/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[  +14 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/master
[        ] executing: [/usr/local/flutter/] git ls-remote --get-url origin
[  +13 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[  +51 ms] executing: [/usr/local/flutter/] git rev-parse --abbrev-ref HEAD
[  +14 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] master
[   +6 ms] executing: sw_vers -productName
[  +12 ms] Exit code 0 from: sw_vers -productName
[        ] macOS
[        ] executing: sw_vers -productVersion
[  +13 ms] Exit code 0 from: sw_vers -productVersion
[        ] 11.2
[        ] executing: sw_vers -buildVersion
[  +15 ms] Exit code 0 from: sw_vers -buildVersion
[        ] 20D64
[   +5 ms] executing: sysctl hw.optional.arm64
[   +4 ms] Exit code 1 from: sysctl hw.optional.arm64
[        ] sysctl: unknown oid 'hw.optional.arm64'
[  +57 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +42 ms] executing: /Users/tom/Library/Android/sdk/platform-tools/adb devices -l
[  +13 ms] executing: sysctl hw.optional.arm64
[   +4 ms] Exit code 1 from: sysctl hw.optional.arm64
[        ] sysctl: unknown oid 'hw.optional.arm64'
[        ] executing: xcrun xcodebuild -version
[ +134 ms] Exit code 0 from: xcrun xcodebuild -version
[   +2 ms] Xcode 12.4
           Build version 12D4e
[   +2 ms] executing: xcrun xcdevice list --timeout 2
[   +3 ms] xcrun simctl list --json devices
[        ] executing: xcrun simctl list --json devices
[  +12 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +56 ms] executing: /Users/tom/Library/Android/sdk/platform-tools/adb devices -l
[        ] executing: xcrun xcdevice list --timeout 2
[   +1 ms] xcrun simctl list --json devices
[        ] executing: xcrun simctl list --json devices
[  +13 ms] Skipping pub get: version match.
[ +119 ms] Generating /Users/tom/Development/slider_themedata_bug/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[  +90 ms] List of devices attached
[   +2 ms] List of devices attached
[  +95 ms] Launching lib/main.dart on Chrome in debug mode...
[ +113 ms] {
                      "devices" : {

REMOVED DEVICES OUTPUT FOR BREVITY!

                 }
               ]
             }
           }
[  +36 ms] Updating assets
[  +79 ms] Waiting for connection from debug service on Chrome...
[  +63 ms] <- reset
[   +6 ms] /usr/local/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /usr/local/flutter/bin/cache/artifacts/engine/darwin-x64/frontend_server.dart.snapshot --sdk-root
/usr/local/flutter/bin/cache/flutter_web_sdk/ --incremental --target=dartdevc --debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill
/var/folders/xb/0dzpwyg97cn7k1vx9nk3s73m0000gn/T/flutter_tools.ArVhqh/flutter_tool.zBqpnE/app.dill --libraries-spec file:///usr/local/flutter/bin/cache/flutter_web_sdk/libraries.json --packages
/Users/tom/Development/slider_themedata_bug/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-root
/var/folders/xb/0dzpwyg97cn7k1vx9nk3s73m0000gn/T/flutter_tools.ArVhqh/flutter_tools.ujzMDo --filesystem-scheme org-dartlang-app --initialize-from-dill build/c7922d95bf4a2462b75c84a97c312edb.cache.dill.track.dill
--platform file:///usr/local/flutter/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk.dill --no-sound-null-safety
[  +17 ms] <- compile org-dartlang-app:/web_entrypoint.dart
[+2444 ms] [
                      {

REMOVED DEVICES OUTPUT FOR BREVIITY 

   
           ]
[+11894 ms] Waiting for connection from debug service on Chrome... (completed in 14,4s)
[        ] Synced 29.2MB.
[        ] <- accept
[        ] Caching compiled dill
[  +73 ms] Using Google Chrome 88.0.4324.146 

[ +537 ms] [CHROME]:
[        ] [CHROME]:DevTools listening on ws://127.0.0.1:50026/devtools/browser/22c72890-0df6-48ba-b3ff-4a0ff0950f43
[ +561 ms] DwdsInjector: Received request for entrypoint at http://localhost:49953/main_module.bootstrap.js
[   +5 ms] MetadataProvider: Loading debug metadata...
[   +8 ms] MetadataProvider: Loaded debug metadata (no sound null safety)
[   +7 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:49953/main_module.bootstrap.js
[+1240 ms] ChromeProxyService: Initializing expression compiler for main_module.bootstrap.js with sound null safety: false
[ +301 ms] DevHandler: Debug service listening on ws://127.0.0.1:50052/Yl0j5_Mmt2g=/ws

[   +7 ms] Debug service listening on ws://127.0.0.1:50052/Yl0j5_Mmt2g=/ws
[        ] Running with unsound null safety
[        ] For more information see https://dart.dev/null-safety/unsound-null-safety
[   +1 ms] 🔥  To hot restart changes while running, press "r" or "R".
[        ] For a more detailed help message, press "h". To quit, press "q".
[+1352 ms] ══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
[   +3 ms] The following UnimplementedError was thrown during a scheduler callback:
[        ] UnimplementedError
[        ] When the exception was thrown, this was the stack:
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49  throw_
[        ] lib/_engine/engine/canvaskit/layer_scene_builder.dart 196:5                   pushShaderMask
[        ] packages/flutter/src/rendering/layer.dart 1779:26                             addToScene
[        ] packages/flutter/src/rendering/layer.dart 407:5                               [_addToSceneWithRetainedRendering]
[        ] packages/flutter/src/rendering/layer.dart 994:14                              addChildrenToScene
[        ] packages/flutter/src/rendering/layer.dart 1966:5                              addToScene
[        ] packages/flutter/src/rendering/layer.dart 407:5                               [_addToSceneWithRetainedRendering]
[        ] packages/flutter/src/rendering/layer.dart 994:14                              addChildrenToScene
[        ] packages/flutter/src/rendering/layer.dart 1131:5                              addToScene
[        ] packages/flutter/src/rendering/layer.dart 407:5                               [_addToSceneWithRetainedRendering]
[        ] packages/flutter/src/rendering/layer.dart 994:14                              addChildrenToScene
[        ] packages/flutter/src/rendering/layer.dart 1131:5                              addToScene
[        ] packages/flutter/src/rendering/layer.dart 407:5                               [_addToSceneWithRetainedRendering]
[        ] packages/flutter/src/rendering/layer.dart 994:14                              addChildrenToScene
[        ] packages/flutter/src/rendering/layer.dart 1576:5                              addToScene
[        ] packages/flutter/src/rendering/layer.dart 732:5                               buildScene
[   +1 ms] packages/flutter/src/rendering/view.dart 217:30                               compositeFrame
[        ] packages/flutter/src/rendering/binding.dart 457:18                            drawFrame
[        ] packages/flutter/src/widgets/binding.dart 874:13                              drawFrame
[        ] packages/flutter/src/rendering/binding.dart 319:5                             [_handlePersistentFrameCallback]
[        ] packages/flutter/src/scheduler/binding.dart 1144:15                           [_invokeFrameCallback]
[        ] packages/flutter/src/scheduler/binding.dart 1082:9                            handleDrawFrame
[        ] packages/flutter/src/scheduler/binding.dart 865:7                             <fn>
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19       internalCallback
[        ] ════════════════════════════════════════════════════════════════════════════════════════════════════
[        ] Another exception was thrown: UnimplementedError
[+5378 ms] Another exception was thrown: UnimplementedError
[   +5 ms] Another exception was thrown: UnimplementedError
[   +2 ms] Another exception was thrown: UnimplementedError
[  +16 ms] Another exception was thrown: UnimplementedError
[  +16 ms] Another exception was thrown: UnimplementedError
porcupine:slider_themedata_bug tom$ flutter analyze
Analyzing slider_themedata_bug...                                       
No issues found! (ran in 1.6s)
porcupine:slider_themedata_bug tom$ 
porcupine:slider_themedata_bug tom$ flutter doctor -v
[✓] Flutter (Channel master, 1.26.0-18.0.pre.210, on macOS 11.2 20D64 darwin-x64, locale de-DE)
    • Flutter version 1.26.0-18.0.pre.210 at /usr/local/flutter
    • Framework revision a77388e670 (3 hours ago), 2021-02-04 22:51:04 -0800
    • Engine revision b04955656c
    • Dart version 2.13.0 (build 2.13.0-0.0.dev)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
    • Android SDK at /Users/tom/Library/Android/sdk
    • Platform android-29, build-tools 29.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

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

[✓] Android Studio (version 3.4)
    • 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 1.8.0_152-release-1343-b01)

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2 20D64 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 88.0.4324.146

! Doctor found issues in 1 category.

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work liste: web_canvaskitCanvasKit (a.k.a. Skia-on-WebGL) rendering backend for Webe: web_htmlHTML rendering backend for Webf: material designflutter/packages/flutter/material repository.found in release: 1.26Found to occur in 1.26frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallywaiting for PR to land (fixed)A fix is in flight

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions