Repository navigation
Closed
flutter/packages
#12647Closed
Copy link
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listfound in release: 3.47Found to occur in 3.47Found to occur in 3.47has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: cameraThe camera pluginThe camera pluginpackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-webWeb applications specificallyWeb applications specificallyteam-webOwned by Web platform teamOwned by Web platform teamtriaged-webTriaged by Web platform teamTriaged by Web platform team
Description
What package does this bug report belong to?
camera
What target platforms are you seeing this bug on?
Web
Have you already upgraded your packages?
Yes
Dependency versions
pubspec.lock
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
async:
dependency: transitive
description:
name: async
sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
url: "https://pub.dev"
source: hosted
version: "2.13.1"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
camera:
dependency: "direct main"
description:
name: camera
sha256: "558230d6ce6ccea856b32d390db7e7b557adf4d9320aa614481bd3f2f608953f"
url: "https://pub.dev"
source: hosted
version: "0.12.0+2"
camera_android_camerax:
dependency: transitive
description:
name: camera_android_camerax
sha256: "6d8dd23f8ad52c36ae3da7417a59b3c3faa3d1e1b83c983a04ca8383f001233c"
url: "https://pub.dev"
source: hosted
version: "0.7.4+5"
camera_avfoundation:
dependency: transitive
description:
name: camera_avfoundation
sha256: "866e9cd8370f8055d005c0413937a52dc1d7a472687f0ee3ce02392955aababa"
url: "https://pub.dev"
source: hosted
version: "0.10.2"
camera_platform_interface:
dependency: transitive
description:
name: camera_platform_interface
sha256: "4524ca6eb4176b066864036ad4fe02c3e4863e63b77eadc21a5bf56824f43498"
url: "https://pub.dev"
source: hosted
version: "2.13.1"
camera_web:
dependency: transitive
description:
name: camera_web
sha256: "081441bd2f92b5841aa70ff4d6eddfe34078d97f9d085cc9e0f9d0102f145925"
url: "https://pub.dev"
source: hosted
version: "0.3.5+5"
characters:
dependency: transitive
description:
name: characters
sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
source: hosted
version: "1.4.1"
clock:
dependency: transitive
description:
name: clock
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.1"
cross_file:
dependency: transitive
description:
name: cross_file
sha256: "92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51"
url: "https://pub.dev"
source: hosted
version: "0.3.5+4"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
url: "https://pub.dev"
source: hosted
version: "1.0.9"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
source: hosted
version: "1.3.3"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
url: "https://pub.dev"
source: hosted
version: "6.0.0"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785"
url: "https://pub.dev"
source: hosted
version: "2.0.35"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
source: hosted
version: "11.0.2"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
source: hosted
version: "3.0.10"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
lints:
dependency: transitive
description:
name: lints
sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
url: "https://pub.dev"
source: hosted
version: "6.1.0"
matcher:
dependency: transitive
description:
name: matcher
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev"
source: hosted
version: "0.12.19"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
source: hosted
version: "0.13.0"
meta:
dependency: transitive
description:
name: meta
sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
url: "https://pub.dev"
source: hosted
version: "1.18.0"
path:
dependency: transitive
description:
name: path
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
source_span:
dependency: transitive
description:
name: source_span
sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
url: "https://pub.dev"
source: hosted
version: "1.10.2"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
stream_transform:
dependency: transitive
description:
name: stream_transform
sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
url: "https://pub.dev"
source: hosted
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
url: "https://pub.dev"
source: hosted
version: "0.7.11"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
source: hosted
version: "2.2.0"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0"
url: "https://pub.dev"
source: hosted
version: "15.3.0"
web:
dependency: transitive
description:
name: web
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
sdks:
dart: ">=3.12.2 <4.0.0"
flutter: ">=3.44.0"
Steps to reproduce
- Try to change the flash mode on web
Solution
After a bit of debugging, I figured line 337 in lib/src/camera.dart of the camera_web package contains the root cause of the issue, or rather is part of it.
The problem is that the NonStandardFieldsOnMediaTrackCapabilities extension assumes the torchNullable field to be a JSArray<JSBoolean>, but it actually, in the final JS code, is just a JSBoolean.
Meaning, the issue can be fixed by modifying both:
extension NonStandardFieldsOnMediaTrackCapabilities on MediaTrackCapabilities {
// ...
@JS('torch')
- external JSArray<JSBoolean>? get torchNullable;
+ external JSBoolean? get torchNullable;
// ...
}And:
void _setTorchMode({required bool enabled}) {
// ...
final bool canEnableTorchMode =
- defaultVideoTrack.getCapabilities().torchNullable?.toDart.first.toDart ?? false;
+ defaultVideoTrack.getCapabilities().torchNullable?.toDart ?? false;
// ...
}Expected results
Should change the state of the flashlight.
Actual results
Throws an error: DartError: TypeError: true: type 'bool' is not a subtype of type 'JSArray<Object?>?
Code sample
Code sample
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
late List<CameraDescription> _cameras;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
_cameras = await availableCameras();
runApp(const CameraApp());
}
class CameraApp extends StatefulWidget {
const CameraApp({super.key});
@override
State<CameraApp> createState() => _CameraAppState();
}
class _CameraAppState extends State<CameraApp> {
int controllerIndex = 0;
CameraController? controller;
@override
void initState() {
super.initState();
_initController();
}
void _initController() async {
if (_cameras.isEmpty || !(controller?.value.isInitialized ?? true)) return;
controller?.dispose();
controller =
CameraController(_cameras[controllerIndex], ResolutionPreset.max)
..initialize().then((_) {
if (mounted) setState(() {});
});
}
@override
void dispose() {
controller?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Camera Web Flash Error Demo",
home: Scaffold(
appBar: AppBar(title: Text("Camera Web Flash Error Demo")),
floatingActionButton: Column(
spacing: 8,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
FloatingActionButton(
onPressed: () {
controllerIndex = (controllerIndex + 1) % _cameras.length;
_initController();
},
child: Icon(Icons.flip_camera_android),
),
FloatingActionButton.large(
onPressed: () {
controller?.setFlashMode(FlashMode.torch);
},
child: Icon(Icons.science),
),
],
),
body: controller?.value.isInitialized ?? false
? SizedBox.expand(child: CameraPreview(controller!))
: null,
),
);
}
}I'm assuming that none of your development machines have a flashlight, so we'll have to access the flutter app on mobile. (The following is for android only.)
flutter run -d web-server --web-port 8080 --web-hostname 0.0.0.0adb reverse tcp:8080 tcp:8080
(So that the browser doesn't complain about insecure connection for camera access, we have to access the test app over localhost)- http://localhost:8080 on device
- chrome://inspect/#devices on pc, wait a bit, click "inspect" next to "Camera Web Flash Error Demo" under the device name (more: https://developer.chrome.com/docs/devtools/remote-debugging)
- Do testing: Switch to a camera that should support a flash, then press the big test button. The mentioned error will be thrown and is visible in the console.
adb reverse --remove tcp:8080
Screenshots or Videos
Screenshots / Video demonstration
Not applicable.
Logs
Logs
dart_sdk.js:3803 Uncaught (in promise) DartError: TypeError: true: type 'bool' is not a subtype of type 'JSArray<Object?>?'
at Object.throw_ [as throw] (dart_sdk.js:3803:11)
at dartDevEmbedder.defineLibrary.dart_rti.Rti.new._generalNullableAsCheckImplementation (dart_sdk.js:9825:15)
at Object.getProperty (dart_sdk.js:72501:18)
at [_setTorchMode] (camera_service.dart.lib.js:1327:64)
at dartDevEmbedder.defineLibrary.camera.Camera.new.setFlashMode (camera_service.dart.lib.js:1319:26)
at camera_web.dart.lib.js:934:98
at dart_sdk.js:40935:13
at dart_sdk.js:40945:7
at Object._asyncStartSync (dart_sdk.js:40893:5)
at dartDevEmbedder.defineLibrary.camera_web.CameraPlugin.new.setFlashMode (camera_web.dart.lib.js:951:20)
at camera_preview.dart.lib.js:2099:136
at dart_sdk.js:40935:13
at dart_sdk.js:40945:7
at Object._asyncStartSync (dart_sdk.js:40893:5)
at dartDevEmbedder.defineLibrary.camera_controller.CameraController.new.setFlashMode (camera_preview.dart.lib.js:2133:20)
at main.dart.lib.js:316:104
at dartDevEmbedder.defineLibrary.ink_well._InkResponseState.new.handleTap (time.dart.lib.js:121498:34)
at tear (dart_sdk.js:3848:46)
at dartDevEmbedder.defineLibrary.tap.TapGestureRecognizer.new.invokeCallback (recognizer.dart.lib.js:459:18)
at dartDevEmbedder.defineLibrary.tap.TapGestureRecognizer.new.handleTapUp (tap.dart.lib.js:824:20)
at [_checkUp] (tap.dart.lib.js:526:12)
at dartDevEmbedder.defineLibrary.tap.TapGestureRecognizer.new.handlePrimaryPointer (tap.dart.lib.js:471:23)
at dartDevEmbedder.defineLibrary.tap.TapGestureRecognizer.new.handleEvent (recognizer.dart.lib.js:842:16)
at tear (dart_sdk.js:3848:46)
at [_dispatch] (pointer_router.dart.lib.js:122:9)
at pointer_router.dart.lib.js:149:82
at dartDevEmbedder.defineLibrary._js_helper.LinkedMap.new.forEach (dart_sdk.js:23589:9)
at [_dispatchEventToRoutes] (pointer_router.dart.lib.js:146:29)
at dartDevEmbedder.defineLibrary.pointer_router.PointerRouter.new.route (pointer_router.dart.lib.js:141:37)
at dartDevEmbedder.defineLibrary.binding.WidgetsFlutterBinding.new.handleEvent (binding.dart.lib.js:617:26)
at dartDevEmbedder.defineLibrary.binding.WidgetsFlutterBinding.new.dispatchEvent (binding.dart.lib.js:605:24)
at dartDevEmbedder.defineLibrary.binding.WidgetsFlutterBinding.new.dispatchEvent (unique_widget.dart.lib.js:349528:13)
at [_handlePointerEventImmediately] (binding.dart.lib.js:578:14)
at dartDevEmbedder.defineLibrary.binding.WidgetsFlutterBinding.new.handlePointerEvent (binding.dart.lib.js:548:43)
at [_flushPointerEventQueue] (binding.dart.lib.js:537:14)
at [_handlePointerDataPacket] (binding.dart.lib.js:512:40)
at tear (dart_sdk.js:3848:46)
at Object.invoke1 (dart_sdk.js:247466:7)
at dartDevEmbedder.defineLibrary._engine.EnginePlatformDispatcher.new.invokeOnPointerDataPacket (dart_sdk.js:210123:15)
at [_sendToFramework] (dart_sdk.js:214581:49)
at dartDevEmbedder.defineLibrary._engine.ClickDebouncer.new.onPointerData (dart_sdk.js:214481:31)
at dartDevEmbedder.defineLibrary._engine._PointerAdapter.new.tear (dart_sdk.js:3848:46)
at dart_sdk.js:215350:28
at dart_sdk.js:215278:9
at loggedHandler (dart_sdk.js:214807:11)
at _RootZone.runUnary (dart_sdk.js:39509:59)
at dart_sdk.js:39479:34
at Object._callDartFunctionFast1 (dart_sdk.js:72355:14)
at ret (dart_sdk.js:72273:22)
throw_ @ dart_sdk.js:3803
_generalNullableAsCheckImplementation @ dart_sdk.js:9825
getProperty @ dart_sdk.js:72501
[_setTorchMode] @ camera_service.dart.lib.js:1327
setFlashMode @ camera_service.dart.lib.js:1319
(anonym) @ camera_web.dart.lib.js:934
(anonym) @ dart_sdk.js:40935
(anonym) @ dart_sdk.js:40945
_asyncStartSync @ dart_sdk.js:40893
setFlashMode @ camera_web.dart.lib.js:951
(anonym) @ camera_preview.dart.lib.js:2099
(anonym) @ dart_sdk.js:40935
(anonym) @ dart_sdk.js:40945
_asyncStartSync @ dart_sdk.js:40893
setFlashMode @ camera_preview.dart.lib.js:2133
(anonym) @ main.dart.lib.js:316
handleTap @ time.dart.lib.js:121498
tear @ dart_sdk.js:3848
invokeCallback @ recognizer.dart.lib.js:459
handleTapUp @ tap.dart.lib.js:824
[_checkUp] @ tap.dart.lib.js:526
handlePrimaryPointer @ tap.dart.lib.js:471
handleEvent @ recognizer.dart.lib.js:842
tear @ dart_sdk.js:3848
[_dispatch] @ pointer_router.dart.lib.js:122
(anonym) @ pointer_router.dart.lib.js:149
forEach @ dart_sdk.js:23589
[_dispatchEventToRoutes] @ pointer_router.dart.lib.js:146
route @ pointer_router.dart.lib.js:141
handleEvent @ binding.dart.lib.js:617
dispatchEvent @ binding.dart.lib.js:605
dispatchEvent @ unique_widget.dart.lib.js:349528
[_handlePointerEventImmediately] @ binding.dart.lib.js:578
handlePointerEvent @ binding.dart.lib.js:548
[_flushPointerEventQueue] @ binding.dart.lib.js:537
[_handlePointerDataPacket] @ binding.dart.lib.js:512
tear @ dart_sdk.js:3848
invoke1 @ dart_sdk.js:247466
invokeOnPointerDataPacket @ dart_sdk.js:210123
[_sendToFramework] @ dart_sdk.js:214581
onPointerData @ dart_sdk.js:214481
tear @ dart_sdk.js:3848
(anonym) @ dart_sdk.js:215350
(anonym) @ dart_sdk.js:215278
loggedHandler @ dart_sdk.js:214807
runUnary @ dart_sdk.js:39509
(anonym) @ dart_sdk.js:39479
_callDartFunctionFast1 @ dart_sdk.js:72355
ret @ dart_sdk.js:72273Flutter Doctor output
Doctor output
[√] Flutter (Channel stable, 3.44.7, on Microsoft Windows [Version 10.0.26200.9168], locale de-DE) [576ms]
• Flutter version 3.44.7 on channel stable at C:\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 84fc5cbb22 (5 weeks ago), 2026-07-17 10:20:17 -0700
• Engine revision 69c8c61792
• Dart version 3.12.2
• DevTools version 2.57.0
• Feature flags: enable-web, enable-linux-desktop, no-enable-macos-desktop, enable-windows-desktop, enable-android,
no-enable-ios, cli-animations, enable-native-assets, enable-swift-package-manager, omit-legacy-version-file,
enable-lldb-debugging, enable-uiscene-migration
[√] Windows Version (Windows 11 or higher, 25H2, 2009) [1.275ms]
[√] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [6,8s]
• Android SDK at C:\Users\jakob\AppData\Local\Android\Sdk
• Emulator version 34.2.16.0 (build_id 12038310) (CL:N/A)
• Platform android-36, build-tools 36.0.0
• Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
This is the JDK bundled with the latest Android Studio installation on this machine.
To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment (build 17.0.11+0--11852314)
• All Android licenses accepted.
[√] Chrome - develop for the web [242ms]
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.14.28) [241ms]
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.14.37027.9
• Windows 10 SDK version 10.0.26100.0
[√] Connected device (3 available) [420ms]
• Pixel 9 Pro (mobile) • 192.168.178.62:42019 • android-arm64 • Android 17 (API 37)
• Windows (desktop) • windows • windows-arm64 • Microsoft Windows [Version 10.0.26200.9168]
• Chrome (web) • chrome • web-javascript • Google Chrome 151.0.7922.140
[√] Network resources [315ms]
• All expected network resources are available.
• No issues found!Reacted by Hark Singh [SSW]
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listfound in release: 3.47Found to occur in 3.47Found to occur in 3.47has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: cameraThe camera pluginThe camera pluginpackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-webWeb applications specificallyWeb applications specificallyteam-webOwned by Web platform teamOwned by Web platform teamtriaged-webTriaged by Web platform teamTriaged by Web platform team
Activity
saurabh-mirajkar commentedon Aug 20, 2026
@JHubi1 Thanks for the report and the detailed investigation. I was able to reproduce the exception on the latest stable channel using the provided sample and steps. Labelling for further investigation.
flutter --version
0xharkirat commentedon Sep 3, 2026
The PR I linked is approved.
waiting for it to be merged... 🚀
[camera_web] Fix TypeError when reading the torch capability (#12647)
0xharkirat commentedon Sep 8, 2026
Merged 🎉
Always a pleasure to contribute and help take Flutter to the moon 🚀
Especially from Australia, where the Flutter community is a bit smaller compared to the Americas, Europe, and India.
[camera_web] Fix TypeError when reading the torch capability (flutter…
[camera_web] Fix TypeError when reading the torch capability (flutter…
github-actions commentedon Sep 23, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.