Coder Social home page Coder Social logo

plugins's Introduction

plugins

Build

This repo contains Flutter plugins maintained by the flutter-tizen team. We're in process of adding Tizen platform support to existing first and third-party plugins on pub.dev based on their popularity. If the plugin you're looking for isn't implemented for Tizen yet, consider filing an issue or creating a package by yourself. (We welcome your pull requests!)

To build Flutter applications with plugins, use the flutter-tizen tool.

Every plugin in this repo is written in either C++, C#, or Dart. For how to write a new plugin or extend existing plugins for Tizen, see this page.

List of packages

The "non-endorsed" status means that the plugin is not endorsed by the original author. In such case, you must set both foobar and foobar_tizen package dependencies in pubspec.yaml file to achieve full functionality.

Tizen package Frontend package Pub Endorsed
audioplayers_tizen audioplayers (3rd-party) pub package No
battery_plus_tizen battery_plus (1st-party) pub package No
camera_tizen camera (1st-party) pub package No
connectivity_plus_tizen connectivity_plus (1st-party) pub package No
device_info_plus_tizen device_info_plus (1st-party) pub package No
firebase_core_tizen firebase_core pub package No
flutter_app_badger_tizen flutter_app_badger (3rd-party) pub package No
flutter_secure_storage_tizen flutter_secure_storage (3rd-party) pub package No
flutter_tts_tizen flutter_tts (3rd-party) pub package No
flutter_webrtc_tizen flutter_webrtc (3rd-party) pub package No
geolocator_tizen geolocator (3rd-party) pub package No
google_maps_flutter_tizen google_maps_flutter (1st-party) pub package No
google_sign_in_tizen google_sign_in (1st-party) pub package No
image_picker_tizen image_picker (1st-party) pub package No
in_app_purchase_tizen in_app_purchase (1st-party) pub package No
integration_test_tizen integration_test (1st-party) pub package No
messageport_tizen (Tizen-only) pub package N/A
network_info_plus_tizen network_info_plus (1st-party) pub package No
package_info_plus_tizen package_info_plus (1st-party) pub package No
path_provider_tizen path_provider (1st-party) pub package No
permission_handler_tizen permission_handler (3rd-party) pub package No
sensors_plus_tizen sensors_plus (1st-party) pub package No
shared_preferences_tizen shared_preferences (1st-party) pub package No
sqflite_tizen sqflite (3rd-party) pub package No
tizen_app_control (Tizen-only) pub package N/A
tizen_app_manager (Tizen-only) pub package N/A
tizen_audio_manager (Tizen-only) pub package N/A
tizen_bundle (Tizen-only) pub package N/A
tizen_log (Tizen-only) pub package N/A
tizen_notification (Tizen-only) pub package N/A
tizen_package_manager (Tizen-only) pub package N/A
tizen_rpc_port (Tizen-only) pub package N/A
url_launcher_tizen url_launcher (1st-party) pub package No
video_player_avplay (Tizen-only) pub package N/A
video_player_tizen video_player (1st-party) pub package No
video_player_videohole (Tizen-only) pub package N/A
wakelock_tizen wakelock (3rd-party) pub package No
wearable_rotary (Tizen-only) pub package N/A
webview_flutter_lwe webview_flutter (1st-party) pub package No
webview_flutter_tizen webview_flutter (1st-party) pub package No

Device limitations

Package name Watch Watch
emulator
TV TV
emulator
Remarks
audioplayers_tizen ✔️ ✔️ ✔️ ✔️
battery_plus_tizen ✔️ ✔️ No battery
camera_tizen No camera
connectivity_plus_tizen ✔️ ⚠️ ✔️ ✔️ Returns incorrect connection status
device_info_plus_tizen ✔️ ✔️ ✔️ ✔️
firebase_core ✔️ ✔️ ✔️ ✔️
flutter_app_badger_tizen ✔️ ✔️ API not supported
flutter_secure_storage_tizen ✔️ ✔️ ✔️ ✔️
flutter_tts_tizen ✔️ ✔️ ✔️ ✔️
flutter_webrtc_tizen ✔️ No camera
geolocator_tizen ✔️ ✔️ Not applicable for TV
google_maps_flutter_tizen ✔️ ✔️ ✔️ ✔️
google_sign_in_tizen ✔️ ✔️ ✔️ ✔️
image_picker_tizen ⚠️ No camera,
No file manager app
in_app_purchase_tizen ✔️ Only applicable for TV
integration_test_tizen ✔️ ✔️ ✔️ ✔️
messageport_tizen ✔️ ✔️ ✔️ ✔️
network_info_plus_tizen ✔️ ✔️ API not supported on emulator
package_info_plus_tizen ✔️ ✔️ ✔️ ✔️
path_provider_tizen ✔️ ✔️ ✔️ ✔️
permission_handler_tizen ✔️ ✔️ ⚠️ ⚠️ Not applicable for TV
sensors_plus_tizen ✔️ ✔️ No sensor hardware
shared_preferences_tizen ✔️ ✔️ ✔️ ✔️
sqflite_tizen ✔️ ✔️ ✔️ ✔️
tizen_app_control ✔️ ✔️ ✔️ ✔️
tizen_app_manager ✔️ ✔️ ✔️ ✔️
tizen_audio_manager ✔️ ✔️ ✔️ ✔️
tizen_bundle ✔️ ✔️ ✔️ ✔️
tizen_log ✔️ ✔️ Not applicable for TV
tizen_notification ✔️ ✔️ ✔️ API not supported
tizen_package_manager ✔️ ✔️ ✔️ ✔️
tizen_rpc_port ✔️ ✔️ ✔️ ✔️
url_launcher_tizen ✔️ ✔️ No browser app
video_player_avplay ✔️ ⚠️ See README for details
video_player_tizen ✔️ ✔️ ✔️ TV emulator issue
video_player_videohole ✔️ ⚠️ See README for details
wakelock_tizen ✔️ ✔️ Cannot override system settings
wearable_rotary ✔️ ✔️ Not applicable for TV
webview_flutter_lwe ✔️ ✔️ ✔️ ✔️ Not for production use
webview_flutter_tizen ✔️ ✔️ API not supported

plugins's People

Contributors

bbrto21 avatar bwikbs avatar hakkyukim avatar hjhun avatar hyue7 avatar jkpu avatar jsuya avatar kazakan avatar m-bialek avatar masterson05 avatar nojinjeong avatar pkosko avatar rexios80 avatar rmanganiello avatar rookiejava avatar rwalczyna avatar seungsoo47 avatar swanseo0 avatar swift-kim avatar upple avatar wanchao-xu avatar wiertel avatar wonyoungchoi avatar xiaowei-guan avatar ynoo-nam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plugins's Issues

[wakelock] Endorsed implementation

Hi maintainers 🙂

I stumbled across the efforts in this repo (which I think are awesome 🔥) and I wanted to open a discussion about the non-endorsed nature of the implementations.

As the maintainer of the wakelock plugin specifically, I am wondering if there is any way we can collaborate to improve the dev experience with Tizen.

On a general note, I am a complete novice regarding Tizen <> Flutter. If the Flutter team does not intend to add first-party support for Tizen (is this the case?), then it might be beneficial to have the non-endorsed implementations everywhere?
Maybe I am also completely on the wrong track, any input seems useful.


No action items need to evolve from this dicussion, I am just generally curious :)

[network_info_plus] getWifiBroadcast() crashes if wifi is not connected

Tried running the network_info_plus_example on device and the app crashed instantly.
There wifi is not connected. There are errors like this in dlog:

E/WIFI_MANAGER(165284): network_interface.c: __net_extract_connected_profile(1239) > There is no connected service
E/WIFI_MANAGER(165284): network_interface.c: net_get_connected_profile(3273) > Failed to get service(profile) list. Error [NET_ERR_NO_PROFILE]

[flutter_tts] PlatformException (Invalid Operation) when play has been canceled

How to reproduce:

  1. Launch the example app. (I used a TV 6.0 emulator.)
  2. Enter some text in the text field and click PLAY, and then click STOP or PAUSE while the audio is playing.
  3. Click PLAY again and see this error message:
I/ConsoleMessage(11739): flutter: Playing
I/ConsoleMessage(11739): flutter: Cancel
E/ConsoleMessage(11739): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(Invalid Operation, Invalid Operation, null, null)
E/ConsoleMessage(11739): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:581:7)
E/ConsoleMessage(11739): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:158:18)
E/ConsoleMessage(11739): <asynchronous suspension>
E/ConsoleMessage(11739): #2      _MyAppState._speak (package:flutter_tts_tizen_example/main.dart:90:9)
E/ConsoleMessage(11739): <asynchronous suspension>

cc @rookiejava @flutter-tizen/maintainers

[video_player] tpk was not build for tv to run on live device.

Whenever I use this plugin I'm not able to build tpk
Error message:-

The TV SDK could not be found. Trying with the Wearable SDK...          
Exception: The rootstrap wearable-4.0-emulator.core could not be found. 
To install missing package(s), run:
C:\tizen-studio1\jdk\package-manager\package-manager-cli.exe install WEARABLE-4.0-NativeAppDevelopment-CLI
Building a Tizen application in debug mode...                      755ms
Exception: The build failed.

without using video_player plugin tpk was built and works fine.

[webview_flutter] Doesn't render after hot reload.

It is not clear whether the rendering is not occurring or the touch event is not being dispatched.
But it is always reproduced.

How to reproduce

  • Run webview_flutter example
    - Do hot reload (shift + r)
  • Do restart (shift + r)
  • scroll the screen

Build failed when use video palyer

build failed when try to run the video_player example
Exception: Failed to build native plugins: [PLATFORM] flutter-null [ARCHITECTURE] i586 [COMPILER] LLVM-10.0 [CONFIGURATION] Debug [SBI] prdefine options = [SBI] command : cmd /c make.exe -f "C:\tizen-studio\tools\ide\resources\native\Build\makefile" -r make -f C:\tizen-studio\tools\ide\resources\native\Build/makefile.mk C:\tizen-studio\tools\smart-build-interface\..\msys2\usr\bin\make[1]: Entering directory '/c/Users/Hussen/AppData/Local/Temp/flutter_tools.406f3168/38784c99' find: ‘C:UsersHussenflutter-tizenflutterbincacheartifactsenginetizen-commoncpp_client_wrapper*.cc’: No such file or directory C:\tizen-studio\tools\ide\resources\native\Build/makefile.mk:160: warning: overriding recipe for target 'Debug' C:\tizen-studio\tools\ide\resources\native\Build/makefile.mk:157: warning: ignoring old recipe for target 'Debug' Building target: Debug/libflutter_plugins.so Invoking: C/C++ Linker "C:\tizen-studio\tools\smart-build-interface/../llvm-10/bin/clang++.exe" -o ./Debug/libflutter_plugins.so @./Debug/target_objs.file -lvideo_player_tizen_plugin -L"C:/Users/Hussen/AppData/Local/Temp/flutter_tools.406f3168/38784c99/lib" -Wl,--no-undefined -Wl,-rpath='$ORIGIN' -target i586-tizen-linux-gnueabi -gcc-toolchain "C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/" -ccc-gcc-name i586-linux-gnueabi-g++-march=i586 -Wl,-z,relro,--as-needed,-z,noseparate-code -static-libstdc++ -Xlinker --as-needed -shared -lpthread --sysroot="C:/tizen-studio/platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core" -LC:/tizen-studio/platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core/usr/lib @./Debug/platform_libs.file -lflutter_tizen_tv -L"/c/Users/Hussen/flutter-tizen/flutter/bin/cache/artifacts/engine/tizen-x86-debug" -I"/c/Users/Hussen/flutter-tizen/flutter/bin/cache/artifacts/engine/tizen-common/cpp_client_wrapper/include" -I"/c/Users/Hussen/flutter-tizen/flutter/bin/cache/artifacts/engine/tizen-common/public" -L"/f/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib" -Wl,--undefined=VideoPlayerTizenPluginRegisterWithRegistrar C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld: F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(video_player_tizen_plugin.o): in function VideoPlayerTizenPlugin::RegisterWithRegistrar(flutter::PluginRegistrar*, flutter::TextureRegistrar*)':
C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/video_player_tizen_plugin.cc:54: undefinedreference to flutter::PluginRegistrar::AddPlugin(std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >)' C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld: F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(video_player_tizen_plugin.o): in function VideoPlayerTizenPluginRegisterWithRegistrar':
C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/video_player_tizen_plugin.cc:224:
undefined reference to flutter::PluginRegistrarManager::GetInstance()' C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld: C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/video_player_tizen_plugin.cc:226: undefined reference to flutter::PluginRegistrarManager::GetInstance()'
C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld:
F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(video_player_tizen_plugin.o): in function flutter::PluginRegistrar* flutter::PluginRegistrarManager::GetRegistrar<flutter::PluginRegistrar>(FlutterDesktopPluginRegistrar*)': C:/Users/Hussen/flutter-tizen/flutter/bin/cache/artifacts/engine/tizen-common/cpp_client_wrapper/include\flutter/plugin_registrar.h:106: undefined reference to flutter::PluginRegistrarManager::OnRegistrarDestroyed(FlutterDesktopPluginRegistrar*)'
C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld:
F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(video_player_tizen_plugin.o): in function
std::_MakeUniq<flutter::PluginRegistrar>::__single_object std::make_unique<flutter::PluginRegistrar, FlutterDesktopPluginRegistrar*&>(FlutterDesktopPluginRegistrar*&)': C:\/tizen-studio\tools\smart-build-interface\..\i586-linux-gnueabi-gcc-9.2\lib\gcc\i586-tizen-linux-gnueabi\9.2.0\..\..\..\..\i586-tizen-linux-gnueabi\include\c++\9.2.0\bits\unique_ptr.h:849: undefined reference to flutter::PluginRegistrar::PluginRegistrar(FlutterDesktopPluginRegistrar*)'
C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld:
F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(message.o): in function VideoPlayerApi::setup(flutter::BinaryMessenger*, VideoPlayerApi*)': C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/message.cc:333: undefined reference to flutter::StandardMessageCodec::GetInstance(flutter::StandardCodecSerializer const*)'
C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld:
C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/message.cc:355: undefined reference to
flutter::StandardMessageCodec::GetInstance(flutter::StandardCodecSerializer const*)' C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld: C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/message.cc:377: undefined reference to flutter::StandardMessageCodec::GetInstance(flutter::StandardCodecSerializer const*)'
C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld:
C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/message.cc:400: undefined reference to
flutter::StandardMessageCodec::GetInstance(flutter::StandardCodecSerializer const*)' C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld: C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/message.cc:423: undefined reference to flutter::StandardMessageCodec::GetInstance(flutter::StandardCodecSerializer const*)'
C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld:
F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(message.o):C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/message.cc:446:
more undefined references to flutter::StandardMessageCodec::GetInstance(flutter::StandardCodecSerializer const*)' follow C:\tizen-studio\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/bin\ld: F:/projects/test_app/.dart_tool/flutter_build/718903dc87706f4568e0721753455894/tizen_plugins/lib\libvideo_player_tizen_plugin.a(video_player.o): in function VideoPlayer::setupEventChannel(flutter::BinaryMessenger*)':
C:\Users\Hussen\AppData\Local\Temp\flutter_tools.406f3168\8a1600a1/src/video_player.cc:319: undefined reference
to flutter::StandardMethodCodec::GetInstance(flutter::StandardCodecSerializer const*)' clang++: error: linker command failed with exit code 1 (use -v to see invocation) C:\tizen-studio\tools\smart-build-interface\..\msys2\usr\bin\make[1]: *** [C:\tizen-studio\tools\ide\resources\native\Build/makefile.mk:151: Debug/libflutter_plugins.so] Error 1 C:\tizen-studio\tools\smart-build-interface\..\msys2\usr\bin\make[1]: Leaving directory '/c/Users/Hussen/AppData/Local/Temp/flutter_tools.406f3168/38784c99' make: *** [C:\tizen-studio\tools\ide\resources\native\Build\makefile:27: app_build] Error 2 Total time: 00:00:02.778

[permission_handler] The plugin asks for permission multiple times

The plugin asks for the same permission repeatedly when a permission is denied by user.

How to reproduce:

  1. Run the example app and click either of Permission.(calendar, contacts, location, locationAlways, locationWhenInUse, sms).
  2. Deny when a permission request dialog is prompted. The plugin will ask for the same permission again.

Why this occurs:

Some privileges are redundantly pushed back to permissions_to_request.

switch (permission) {
case PermissionGroup::kCalendar:
privileges->push_back(kPrivilegeCalendarRead);
privileges->push_back(kPrivilegeCalendarWrite);
break;
case PermissionGroup::kCamera:
privileges->push_back(kPrivilegeCamera);
break;
case PermissionGroup::kContacts:
privileges->push_back(kPrivilegeContactRead);
privileges->push_back(kPrivilegeContactWrite);
break;
case PermissionGroup::kLocation:
case PermissionGroup::kLocationAlways:
case PermissionGroup::kLocationWhenInUse:
privileges->push_back(kPrivilegeLocation);
privileges->push_back(kPrivilegeLocationCoarse);
break;
case PermissionGroup::kMicrophone:
privileges->push_back(kPrivilegeRecorder);
break;
case PermissionGroup::kPhone:
privileges->push_back(kPrivilegeCall);
break;
case PermissionGroup::kSensors:
privileges->push_back(kPrivilegeSensors);
break;
case PermissionGroup::kSMS:
privileges->push_back(kPrivilegeMessageRead);
privileges->push_back(kPrivilegeMessageWrite);
break;
case PermissionGroup::kStorage:
privileges->push_back(kPrivilegeExternalStorage);
break;
case PermissionGroup::kMediaLibrary:
privileges->push_back(kPrivilegeMediaStorage);
break;
default:
LOG_WARN("Unknown Permission!");
return false;
}

According to https://docs.tizen.org/application/native/guides/security/privacy-related-permissions,

Since the privileges are grouped, the user’s decision regarding one privilege applies to the whole group of related privileges. For example, if the user has granted permission to use the http://tizen.org/privilege/account.read privilege, permission is automatically granted to the http://tizen.org/privilege/account.write privilege also.

cc @bbrto21

Haptic Feedback

It would be cool if we could tap into the available vibration motors on Tizen devices (e.g. to vibrate when an timer ends). There is a new package that supports haptic feedback on Android and iOS called flutter_haptic that might be useful.

Again, thanks for the awesome plugins. I've got a few apps working now for my Galaxy watch thanks to you guys.

[flutter_blue] Add support for bluetooth communication

There is an existing 3rd party plugin called flutter_blue that lets you communicate through bluetooth on Android and iOS. I think adding Tizen support to this plugin would make Tizen wearable apps significantly more valuable.

On a related note, is there any way to communicate between a wearable device and a mobile phone using Flutter for Tizen? I'd like to be able to communicate in real time across the devices (for example, tapping a button on the watch to play or pause a video on the phone.

Thanks for the Flutter support!

SIGABRT occur in Embedder when using camera and video plugin same time

I have a problem as below, but I haven't made any progress yet.
Is there something wrong with the way I handle the external textures?
You can check the relevant things here.
I need your help and thank you in advance.

How to reproduce

  1. Launch a camera example
  2. Select camera
  3. Take a video a while and done, then the video will play automatically
  4. Select another camera
    Repeat 2-4 until SIGABRT occurs. If the debugger is not attached, rendering may appear to have stopped.

Call stack

(lldb) Process 17608 stopped
* thread #23, name = 'Runner.dll', stop reason = signal SIGABRT
    frame #0: 0xb6bf94fc libc.so.6`__GI_raise + 156
libc.so.6`__GI_raise:
->  0xb6bf94fc <+156>: mov    r0, r12
    0xb6bf9500 <+160>: add    sp, sp, #260
    0xb6bf9504 <+164>: pop    {r4, r7, pc}
    0xb6bf9508 <+168>: ldr    r3, [pc, #0x18]
bt
* thread #23, name = 'Runner.dll', stop reason = signal SIGABRT
  * frame #0: 0xb6bf94fc libc.so.6`__GI_raise + 156
    frame #1: 0xb6be3788 libc.so.6`__GI_abort + 276
    frame #2: 0xa92bd1e0 libflutter_tizen.so`std::__1::__throw_system_error(int, char const*) + 8
    frame #3: 0xa92bc40a libflutter_tizen.so`std::__1::mutex::lock() + 22
    frame #4: 0xa929be52 libflutter_tizen.so`ExternalTextureGL::DestructionCallback(void*) + 18
    frame #5: 0xa7cfa82a libflutter_engine.so`GrSurface::onRelease() + 50
    frame #6: 0xa7dbb00a libflutter_engine.so`GrGLTexture::onRelease() + 158
    frame #7: 0xa7ce7a44 libflutter_engine.so`GrGpuResource::release() + 14
    frame #8: 0xa7cf45da libflutter_engine.so`GrResourceCache::notifyRefCntReachedZero(GrGpuResource*) + 352
    frame #9: 0xa7d09d88 libflutter_engine.so`GrTextureProxy::~GrTextureProxy() + 128
    frame #10: 0xa7d09e6a libflutter_engine.so`virtual thunk to GrTextureProxy::~GrTextureProxy() + 22
    frame #11: 0xa7d7fc04 libflutter_engine.so`SkImage_Gpu::~SkImage_Gpu() + 56
    frame #12: 0xa7af6bd6 libflutter_engine.so`flutter::EmbedderExternalTextureGL::~EmbedderExternalTextureGL() + 54
    frame #13: 0xa7b6898e libflutter_engine.so`std::__1::__tree<std::__1::__value_type<long long, std::__1::shared_ptr<flutter::Texture> >, std::__1::__map_value_compare<long long, std::__1::__value_type<long long, std::__1::shared_ptr<flutter::Texture> >, std::__1::less<long long>, true>, std::__1::allocator<std::__1::__value_type<long long, std::__1::shared_ptr<flutter::Texture> > > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<long long, std::__1::shared_ptr<flutter::Texture> >, std::__1::__tree_node<std::__1::__value_type<long long, std::__1::shared_ptr<flutter::Texture> >, void*>*, int>) + 112
    frame #14: 0xa7b13d9a libflutter_engine.so`fml::MessageLoopImpl::FlushTasks(fml::FlushType) + 170
    frame #15: 0xa7b17b5c libflutter_engine.so`fml::MessageLoopLinux::Run() + 96
    frame #16: 0xa7b13cb6 libflutter_engine.so`fml::MessageLoopImpl::DoRun() + 26
    frame #17: 0xa7b17200 libflutter_engine.so`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*) + 216
    frame #18: 0xb66c8438 libpthread.so.0
    frame #19: 0xb6c9be28 libc.so.6

[video_player] Remaining issues

The 1.0.0 version of video_player (#48) has been merged but there are still problems to be fixed.

  • A video cannot be played on a TV emulator (only white screen). (analysis)
  • An exception occurs when the playback speed is changed just before a video ends.
  • A video doesn't repeat (even if setLooping is set) after the playback speed is changed.
  • seekTo doesn't work properly if the playback speed is not 1.0
  • Too many frames are lost (error message FlutterMarkExternalTextureFrameAvailable(204) > OnFrameAvailable fail)

Public members lack documentation

Packages with public APIs are more appropriate to analyze using dart rather than flutter
However, it is currently reported that there is lack documentation for 59 public members.
after solving all of this, we have to use dart instead of flutter

  • messageport/example/lib/main.dart:6:14 • Document all public members. • public_member_api_docs
  • messageport/example/lib/main.dart:7:14 • Document all public members. • public_member_api_docs
  • messageport/example/lib/main.dart:29:7 • Document all public members. • public_member_api_docs
  • messageport/lib/messageport_tizen.dart:84:16 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:12:7 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:13:3 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:15:16 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:22:16 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:33:16 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:43:16 • Document all public members. • public_member_api_docs
  • messageport/lib/src/messageport_manager.dart:56:19 • Document all public members. • public_member_api_docs
  • package_info_plus/lib/package_info_plus_tizen.dart:18:15 • Document all public members. • public_member_api_docs
  • share_plus/lib/share_plus_tizen.dart:18:15 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/app_control.dart:20:3 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:9:7 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:11:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:14:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:15:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:17:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:18:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:20:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:21:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:24:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:25:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:26:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:27:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:29:1 • Document all public members. • public_member_api_docs
  • url_launcher/lib/src/types.dart:30:1 • Document all public members. • public_member_api_docs
  • wearable_rotary/example/lib/custom_page_view.dart:6:7 • Document all public members. • public_member_api_docs
  • wearable_rotary/example/lib/custom_page_view.dart:7:3 • Document all public members. • public_member_api_docs
  • wearable_rotary/example/lib/custom_page_view.dart:9:14 • Document all public members. • public_member_api_docs
  • wearable_rotary/example/lib/main.dart:12:7 • Document all public members. • public_member_api_docs
  • wearable_rotary/lib/wearable_rotary.dart:7:25 • Document all public members. • public_member_api_docs
  • wearable_rotary/lib/wearable_rotary.dart:16:6 • Document all public members. • public_member_api_docs
  • wearable_rotary/lib/wearable_rotary.dart:17:3 • Document all public members. • public_member_api_docs
  • wearable_rotary/lib/wearable_rotary.dart:18:3 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:15:7 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:16:3 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:30:16 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:31:38 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:32:37 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:33:24 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:34:53 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:35:17 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:36:32 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:171:7 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:207:14 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:213:12 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:217:16 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:268:16 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:282:11 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:284:7 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:288:12 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:290:8 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:303:16 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:376:7 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:400:30 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/src/platform_view_tizen.dart:453:27 • Document all public members. • public_member_api_docs
  • webview_flutter/lib/webview_flutter_tizen.dart:28:15 • Document all public members. • public_member_api_docs

Originally posted by @bbrto21 in #218 (comment)

[video_player] Platform Exception happens when playing multiple videos

I keep disposing of, creating, and initializing the VideoPlayerControllers to play multiple videos successively.
The below error happens while initializing a new video.

I usually dispose of the current controller then create and init new controller under the below condition. (in listener())
I am kind of sure it is not because of using disposed VideoPlayerController because the Error Log is different,
but not sure if my implementation affects it or not.

      _onComplete = () {
        if (_controller.value.isInitialized &&
            !_controller.value.isPlaying &&
            (_controller.value.duration == _controller.value.position)) {
          listener();
          if (_onComplete != null) {
            _controller.removeListener(_onComplete!);
            _onComplete = null;
          }
        }
      };
      _controller.addListener(_onComplete!);
E/ConsoleMessage( 5849): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(player_prepare_async failed, Function not implemented, null, null)
#0      VideoPlayerApi.create (package:video_player_platform_interface/messages.dart:189:7)
<asynchronous suspension>
#1      MethodChannelVideoPlayer.create (package:video_player_platform_interface/method_channel_video_player.dart:47:31)
<asynchronous suspension>
#2      VideoPlayerController.initialize (package:video_player/video_player.dart:308:19)
<asynchronous suspension>
#3      VideoManager._initPlay (package:test_video/main.dart:241:5)
<asynchronous suspension>
#4      VideoManager.play (package:test_video/main.dart:216:5)
<asynchronous suspension>

E/ConsoleMessage( 5849): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(player_get_play_position failed, Function not implemented, null, null)
#0      VideoPlayerApi.position (package:video_player_platform_interface/messages.dart:340:7)
<asynchronous suspension>
#1      MethodChannelVideoPlayer.getPosition (package:video_player_platform_interface/method_channel_video_player.dart:94:9)
<asynchronous suspension>
#2      VideoPlayerController.position (package:video_player/video_player.dart:477:12)
<asynchronous suspension>
#3      VideoPlayerController._applyPlayPause.<anonymous closure> (package:video_player/video_player.dart:431:41)
<asynchronous suspension>
E/ConsoleMessage( 3948): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(player_pause failed, Function not implemented, null, null)
#0      VideoPlayerApi.pause (package:video_player_platform_interface/messages.dart:390:7)
<asynchronous suspension>
#1      VideoPlayerController._applyPlayPause (package:video_player/video_player.dart:445:7)
<asynchronous suspension>
#2      VideoPlayerController.pause (package:video_player/video_player.dart:406:5)
<asynchronous suspension>

flutter-tizen doctor -v

[✓] Flutter (Channel unknown, 2.0.1, on Linux, locale ko_KR.UTF-8)
    • Flutter version 2.0.1 at /home/yeonwoo/flutter_tizen/flutter-tizen/flutter
    • Framework revision c5a4b4029c (4달 전), 2021-03-04 09:47:48 -0800
    • Engine revision 40441def69
    • Dart version 2.12.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /home/yeonwoo/Android/Sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /opt/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Tizen toolchain - develop for Tizen devices
    • Tizen Studio 4.1 at /home/yeonwoo/tizen-studio
    • .NET CLI executable at /snap/bin/dotnet

[✓] Android Studio
    • Android Studio at /opt/android-studio
    • 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_242-release-1644-b3-6222593)

[✓] VS Code (version 1.56.2)
    • VS Code at /usr/share/code
    • Flutter extension version 3.20.0

• No issues found!

[video_player] Orientation tag

As far as I know, each video file has orientation tag, and video player must apply the tag when playing.

While developing a camera plug-in, I created a video with an orientation tag, and played it on Android and Tizen, and found that video_payer_tizen did not use the orientation tag

Packages description is too short.

The following packages were given a low pub point because they had too short descriptions in pubspec.yaml

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package,
what it does, and its target use case.
  • sensors_tizen
  • permission_handler_tizen
  • audioplayers_tizen
  • flutter_tts_tizen
  • wifi_info_flutter_tizen
  • wakelock_tizen
  • integration_test_tizen
  • sensors_plus_tizen
  • camera_tizen

[tizen_app_control] Integration test is failing

@swift-kim Integration test for tizen_app_control is failing like following. Could you check the problems?

$ ./tools/run_command.py test --plugins tizen_app_control --platforms mobile-6.5
============= Testing for tizen_app_control (1/1) =============

00:00 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart Building a Tizen application in debug mode...
The project type of messageport_tizen plugin is "sharedLib", which is deprecated in favor of "staticLib".

00:21 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart
00:22 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart The public profile is used for signing.

00:34 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart
00:35 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart Building a Tizen application in debug mode... 36.3s
✓ Built build/tizen/tpk/org.tizen.tizen_app_control_example-1.0.0.tpk (26.5MB).

00:37 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart Installing build/tizen/tpk/org.tizen.tizen_app_control_example-1.0.0.tpk...
01:03 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart
01:04 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart 27.0s

01:09 +0: loading /tmp/flutter_tools.KGWRDJ/KLIKGX/tizen_app_control_test.dart
01:11 +1: Can receive request from platform
01:11 +2: Can find matching applications
01:11 +3: Can send and receive request
01:11 +4: Omit invalid extra data
01:22 +4: Can send and receive reply
01:22 +4 -1: Can send and receive reply [E]
TimeoutException after 0:00:10.000000: Test timed out after 10 seconds.
dart:isolate _RawReceivePortImpl._handleMessage

01:22 +5 -1: Cannot find target applications
01:23 +5 -1: Can terminate service application
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
Expected: false
Actual:

When the exception was thrown, this was the stack:
#4 main. (file:///home/leess/11_HDD/01_SRC/2020_Flutter/github/plugins/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart:111:5)
#5 main. (file:///home/leess/11_HDD/01_SRC/2020_Flutter/github/plugins/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart:110:52)
#6 testWidgets.. (package:flutter_test/src/widget_tester.dart:176:29)


(elided one frame from package:stack_trace)

This was caught by the test expectation on the following line:
file:///home/leess/11_HDD/01_SRC/2020_Flutter/github/plugins/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart line 111
The test description was:
Can terminate service application
════════════════════════════════════════════════════════════════════════════════════════════════════

01:23 +5 -2: Can terminate service application [E]
Test failed. See exception logs above.
The test description was: Can terminate service application

01:24 +5 -2: (tearDownAll)
01:24 +5 -2: Some tests failed.
============= TEST RESULT =============
FAILED: tizen_app_control ('mobile-6.5', 'TM1', '0000d82c00006200')
flutter-tizen test integration_test failed, see the output above for details.
Some tests failed.

[connectivity] Crash when terminate app

How to reproduce

  1. Run example : flutter-tizen run
  2. Terminate example immediately after launching app via press 'Q' key

Callstack

* thread #33, name = 'DartWorker', stop reason = signal SIGABRT
  * frame #0: 0xb6be24fc libc.so.6`__GI_raise + 156
    frame #1: 0xb6bcc788 libc.so.6`__GI_abort + 276
    frame #2: 0xb6bdb3d0 libc.so.6`__assert_fail_base + 368
    frame #3: 0xb6bdb480 libc.so.6`__GI___assert_fail + 68
    frame #4: 0xb66b3f40 libpthread.so.0`__pthread_mutex_lock + 596
    frame #5: 0xa79b2040 libflutter_engine.so`std::__1::mutex::lock() + 8
    frame #6: 0xa7e17dd4 libflutter_engine.so`flutter::ServiceProtocol::HandleListViewsMethod(rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>*) const + 100
    frame #7: 0xa7e17c6a libflutter_engine.so`flutter::ServiceProtocol::HandleMessage(std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::map<std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::less<std::__1::basic_string_view<char, std::__1::char_traits<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string_view<char, std::__1::char_traits<char> > const, std::__1::basic_string_view<char, std::__1::char_traits<char> > > > > const&, rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>*) const + 158
    frame #8: 0xa7e178ba libflutter_engine.so`flutter::ServiceProtocol::HandleMessage(char const*, char const**, char const**, int, void*, char const**) + 210
    frame #9: 0xa7f166d6 libflutter_engine.so`dart::Service::EmbedderHandleMessage(handler=<unavailable>, js=<unavailable>) at service.cc:1240
    frame #10: 0xa7f16418 libflutter_engine.so`dart::Service::InvokeMethod(I=<unavailable>, msg=<unavailable>, parameters_are_dart_objects=<unavailable>) at service.cc:943
    frame #11: 0xa7e87a6a libflutter_engine.so`dart::NativeEntry::BootstrapNativeCallWrapper(args=<unavailable>, func=<unavailable>)(_Dart_NativeArguments*)) at native_entry.cc:140
    frame #12: 0x9c481c48 // missing frame from here 
    frame #13: 0x9779c368

[audioplayers] Failing integration test in tv-6.0 emulator

@XuWanchaoS
Integration test is failing on tv-6.0 emulator, could you take a look?

./tools/run_command.py test --plugins audioplayers --use-ephemeral-targets --platforms wearable-5.5 tv-6.0
...
============= TEST RESULT =============
SUCCEEDED: audioplayers ('wearable-5.5', 'wearable-5_5-641394', None)
FAILED: audioplayers ('tv-6.0', 'tv-6_0-641394', None)
flutter-tizen test integration_test failed, see the output above for details.
Some tests failed.

The error message is:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
Expected: AudioPlayerState:<AudioPlayerState.COMPLETED>
Actual: AudioPlayerState:<AudioPlayerState.PLAYING>

When the exception was thrown, this was the stack:
#4      main.<anonymous closure>.<anonymous closure> (file:///home/hakkyu/mydir/project/flutter-project/plugins/packages/audioplayers/example/integration_test/audioplayers_test.dart:122:7)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from package:stack_trace)
...

This was caught by the test expectation on the following line:
file:///home/hakkyu/mydir/project/flutter-project/plugins/packages/audioplayers/example/integration_test/audioplayers_test.dart line 122
The test description was:
do not exceed duration after audio completed
════════════════════════════════════════════════════════════════════════════════════════════════════
(If WidgetTester.takeException is called, the above exception will be ignored. If it is not, then the above exception will be dumped when another exception is caught by the framework or when the test ends, whichever happens first, and then the test will fail due to having not caught or expected the exception.)
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
Expected: AudioPlayerState:<AudioPlayerState.COMPLETED>
Actual: AudioPlayerState:<AudioPlayerState.PLAYING>

When the exception was thrown, this was the stack:
#4      main.<anonymous closure>.<anonymous closure> (file:///home/hakkyu/mydir/project/flutter-project/plugins/packages/audioplayers/example/integration_test/audioplayers_test.dart:122:7)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from package:stack_trace)
...

This was caught by the test expectation on the following line:
file:///home/hakkyu/mydir/project/flutter-project/plugins/packages/audioplayers/example/integration_test/audioplayers_test.dart line 122
The test description was:
do not exceed duration after audio completed
════════════════════════════════════════════════════════════════════════════════════════════════════

00:43 +4 -1: asset audio do not exceed duration after audio completed [E]

If this is a known issue and is currently not solvable, we should state that in the Device Limitation in README.

[VideoPlayer]Null check operator used on a null value

E/ConsoleMessage(19508): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: Null check operator used on a null value
E/ConsoleMessage(19508): #0 VideoPlayerController.initialize.errorListener (package:video_player/video_player.dart:381:51)
E/ConsoleMessage(19508): #1 _rootRunUnary (dart:async/zone.dart:1436:47)
E/ConsoleMessage(19508): #2 _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/ConsoleMessage(19508): #3 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7)
E/ConsoleMessage(19508): #4 _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:362:15)
E/ConsoleMessage(19508): #5 _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:378:7)
E/ConsoleMessage(19508): #6 _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:280:7)
E/ConsoleMessage(19508): #7 _ForwardingStreamSubscription._addError (dart:async/stream_pipe.dart:128:11)
E/ConsoleMessage(19508): #8 _ForwardingStream._handleError (dart:async/stream_pipe.dart:95:10)
E/ConsoleMessage(19508): #9 _ForwardingStreamSubscription._handleError (dart:async/stream_pipe.dart:157:13)
E/ConsoleMessage(19508): #10 _rootRunBinary (dart:async/zone.dart:1452:47)
E/ConsoleMessage(19508): #11 _CustomZone.runBinary (dart:async/zone.dart:1342:19)
E/ConsoleMessage(19508): #12 _
E/ConsoleMessage(19508): CustomZone.runBinaryGuarded (dart:async/zone.dart:1252:7)
E/ConsoleMessage(19508): #13 _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:360:15)
E/ConsoleMessage(19508): #14 _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:378:7)
E/ConsoleMessage(19508): #15 _DelayedError.perform (dart:async/stream_impl.dart:602:14)
E/ConsoleMessage(19508): #16 _StreamImplEvents.handleNext (dart:async/stream_impl.dart:706:11)
E/ConsoleMessage(19508): #17 _PendingEvents.schedule. (dart:async/stream_impl.dart:663:7)
E/ConsoleMessage(19508): #18 _rootRun (dart:async/zone.dart:1420:47)
E/ConsoleMessage(19508): #19 _CustomZone.run (dart:async/zone.dart:1328:19)
E/ConsoleMessage(19508): #20 _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
E/ConsoleMessage(19508): #21 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1276:23)
E/ConsoleMessage(19508): #22 _rootRun (dart:async/zone.dart:1428:13)
E/ConsoleMessage(19508): #23 _CustomZone.run (dart:async/zone.dart:1328:19)
E/ConsoleMessage(19508): #24 _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
E/ConsoleMessage(19508): #25 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1276:23)
E/ConsoleMessage(19508): #26 _microtaskLoop (dart:async/schedule_mic
E/ConsoleMessage(19508): rotask.dart:40:21)
E/ConsoleMessage(19508): #27 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)

[audioplayers] Missing implementations

Partially implemented:

  • AudioPlayer.play (not supported arguments: isLocal, respectSilence, stayAwake, duckAudio, recordingActive)
  • AudioPlayer.playBytes (not supported arguments: isLocal, respectSilence, stayAwake, duckAudio, recordingActive)
  • AudioPlayer.setUrl (not supported arguments: isLocal, respectSilence, recordingActive)

Not implemented:

  • Logger.changeLogLevel (generates the following error when invoked)

    Unhandled Exception: PlatformException(Invalid Player ID, Invalid Player ID for method changeLogLevel, null, null)
    
  • NotificationService (not applicable for Tizen)

Needs improvement:

  • AudioPlayer.playBytes (the limitation mentioned in README may be relieved by adding a dartPluginClass)

This issue is just for tracking purpose. We're not going to implement all the functions.

Bezel usage on Samsung Galaxy watches

Is there currently anyway to detect bezel usage on a Samsung Galaxy watch? I've tested briefly and the bezel doesn't seem to trigger a gesture detector or keyboard listener.

There is an equivalent package for Android and iOS called hardware_buttons but it looks deprecated now.

[video_player] video freeze - audio ok

Dear community

first of all - this is a very cool project! Nice work!

I tried to use the tizen video player on a new tizen 6.0 tv (QE50LS03AAUXXN)
I developed web based applications for tizen - so the platform is not new to me. Especially Tizen Studio
But my approach is, for future projects, to develop multi platform applications.

Szenario: try to run the example provided in plugin video_player_tizen

Everything works fine - build - no errors

But the video does not start. Audio yes.

So I created an app on my own - for further testing

Same problem - first frame show up - audio starts - video freeze

Tried to build with 4.0 and 6.0 wearable sdk

Privileges added to manifest as described in documentation

Build says that no TV SDK can be found - maybe this is the problem?
I tried to find the "TV SDK" - but I could not find it in package manager
Tizen Package Manager -> Extensions -> TV Extensions 6.0 is installed

Tried ist with MP4 local, MP4 via WWW, HLS via WWW

Do you habe any idea why my video freezes?

Thank you in advance,
best regards,
Markus

=> flutter-tizen run
Launching lib/main.dart on Tizen QE50LS03AAUXXN in debug mode...
TV SDK could not be found. Trying with Wearable SDK...
The TizenTVTest profile is used for signing.
Building a Tizen application in debug mode... 33.8s
✓ Built build/tizen/tpk/com.example.xxx-1.0.0.tpk (25.6MB).
Installing build/tizen/tpk/com.example.xxx-1.0.0.tpk...

=> flutter-tizen doctor -v
[✓] Flutter (Channel unknown, 2.5.1, on macOS 11.6 20G165 darwin-x64, locale en-GB)
• Flutter version 2.5.1 at /Users/markushockner/development/flutter-tizen/flutter
• Upstream repository unknown
• Framework revision ffb2ecea52 (5 weeks ago), 2021-09-17 15:26:33 -0400
• Engine revision b3af521a05
• Dart version 2.14.2

[✓] Tizen toolchain - develop for Tizen devices
• Framework revision 6ba0011dac (9 days ago), 2021-10-13 12:11:25 +0900
• Engine revision 7e8adde964
• Tizen Studio 4.1.1 at /Users/markushockner/tizen-studio
• .NET SDK 5.0.401 at /usr/local/share/dotnet/dotnet

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /Users/markushockner/Library/Android/sdk
• Platform android-30, build-tools 30.0.2
• ANDROID_HOME = /Users/markushockner/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.

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

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

[✓] Android Studio (version 4.0)
• 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_242-release-1644-b3-6222593)

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

[✓] Connected device (5 available)
• Android SDK built for x86 (mobile) • emulator-5554 • android-x86 •
Android 8.1.0 (API 27) (emulator)
• iPhone 12 Pro Max (mobile) • 7048FD17-0C03-4535-9FCB-44D8B39FD9E0 • ios •
com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
• macOS (desktop) • macos • darwin-x64 • macOS
11.6 20G165 darwin-x64
• Chrome (web) • chrome • web-javascript • Google
Chrome 95.0.4638.54
• Tizen QE50LS03AAUXXN (mobile) • 192.168.80.204:26101 • flutter-tester • Tizen
6.0

Documentation for building tizen flutter plugins

There are a couple of plugins I'd like to add (mainly a tizen version of googleapis), but I have no idea what is different on Tizen. I noticed there are a lot of contributors, so can somebody create basic documentation that highlights everything different?

Writting plugins in C#

Hello,

As far as I understand, flutter plugins can be developed in other languages than C/C++ and Dart. According to paragraph https://flutter.dev/docs/development/packages-and-plugins/developing-packages#step-1-create-the-package-1, it is possible to develop a flutter plugin in Java and Kotlin for Android and Swift and Objective-C for iOS. Would be possible to develop a flutter plugin in C# for Tizen platform? We would like to access some APIs from Tizen.NET.TV package in a flutter application.

[webview_flutter] Support File interface

A problem has been reported that a specific page for in-house app cannot be loaded, because webview_flutter does not support the File interface.

log

I/Starfish(54023): 1.0.0/: will fire top browsing context Window.ON-LOAD event
I/ConsoleMessage(54023): flutter: Page finished loading: http://10.42.0.139/api-test
E/Starfish(54023): 1.0.0/: console.error: TypeError: Invalid operand to 'instanceof': right expr is not a function object
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:59828
E/Starfish(54023): tion xe(e){var t,n;if(ye(e))return e;if(e instanceof se.a.File)return e;if(!_e(e
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:415653
E/Starfish(54023): (n=["resolvedSubtrees"]).call(n,s()(i)),Object(g.i)(o))})),i()(r,x.UPDATE_PARAM,
E/Starfish(54023):                                         ^
E/Starfish(54023): at function call() { [native function] } 
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:968192
E/Starfish(54023): n),i=0;i<n;i++)o[i]=arguments[i];return e.call.apply(e,u()(t=[this]).call(t,o))}
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:963220
E/Starfish(54023): !e)return t;var r=e[n.type];if(r){var o=Z(r)(t,n);return null===o?t:o}return t}}
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:680390
E/Starfish(54023): unction(t){n.forEach((function(n){var r=(0,e[n])(t.get(n),o);(0,a.validateNextSt
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:680361
E/Starfish(54023): [1];return r.withMutations((function(t){n.forEach((function(n){var r=(0,e[n])(t.
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:15644
E/Starfish(54023): nction(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:680332
E/Starfish(54023): ?arguments[0]:t(),o=arguments[1];return r.withMutations((function(t){n.forEach((
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:217259
E/Starfish(54023):  may not dispatch actions.");try{u=!0,i=o(i,e)}finally{u=!1}for(var t=a=s,n=0;n<
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:61076
E/Starfish(54023): on(n){return"function"==typeof n?n(e()):t(n)}}}}function Te(e){var t,n=e.keySeq(
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:219444
E/Starfish(54023): unction D(e,t){return function(){return t(e.apply(void 0,arguments))}}function O
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:89295
E/Starfish(54023): e.catch(11),console.error(e.t0);case 22:p.updateResolvedSubtree([],k.resultMap);
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:779951
E/Starfish(54023): n l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:779741
E/Starfish(54023): hod&&n.abrupt("return",n.arg);r=h;var u=l(e,t,n);if("normal"===u.type){if(r=n.do
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:780373
E/Starfish(54023): ((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:126146
E/Starfish(54023): 99);function o(e,t,n,o,i,a,s){try{var u=e[a](s),c=u.value}catch(e){return void n
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:126349
E/Starfish(54023): n(r,i){var a=e.apply(t,n);function s(e){o(a,r,i,s,u,"next",e)}function u(e){o(a,
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:774368
E/Starfish(54023): rejection=1),!0===l?a=r:(h&&h.enter(),a=l(r),h&&(h.exit(),u=!0)),a===c.promise?f
E/Starfish(54023):                                         ^
E/Starfish(54023): at http://10.42.0.139/js/chunk-4f43e03e.991b370e.js:3:777426
E/Starfish(54023): main)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?a():i=void 0,e}}i=v
E/Starfish(54023):                                         ^
E/ConsoleMessage(54023): GBM_ERR::get_gpu_pxl_fmt(196):::No map for format: 0x34325241
E/ConsoleMessage(54023): GBM_ERR::get_gpu_pxl_fmt(196):::No map for format: 0x34325241
I/E20_MONITOR(55486): ## Enlightenment (PID=517, STAT=S, WCHAN=do_select) is running ! ##
W/LAUNCHPAD(  716): launchpad_memory_monitor.c: _memory_monitor_is_low_memory(104) > previous used ratio(39), current used ratio(40)
^C​

the original issue was reported by @Juwols

Run multiple self-hosted runners on a single machine.

As integration tests are slow, we need to set more runners on the server machine. This is not possible in the current implementation because emulators are, to each runner, shared resources.

This could be solved if tools can create and manipulate emulators during test. I wasn't sure if the CI system could create, launch, poweroff, and delete emulators as I met many failures on several cloud systems. Luckily, it seems that manipulating emulators is possible as long as the server machine has a graphic display attached to it.

I quickly tested it on my machine. These two jobs ran simultaneously on the same machine without interfering each other, and there were no signs of significant performance drops, at least for the tests I've done.

Running integration tests with CI service

I tried several ways to run emulators in CI server for integration tests but concluded that it just cannot be done without digging into how Tizen emulators work under the hood. I did manage to run the emulator, but sdb can't find it: https://cirrus-ci.com/task/5968653813284864 (test branch: https://github.com/HakkyuKim/plugins/tree/cirrus).

Look for:

em-cli launch --name flutter_emulator
Launch command : "/home/tizen/tizen-studio/platforms/tizen-4.0/common/emulator/bin/emulator.sh" --conf "/home/tizen/tizen-studio-data/emulator/vms/flutter_emulator/vm_launch.conf" -j "/home/tizen/tizen-studio/jdk/bin/java"
The VM is launched
...

sdb devices
List of devices attached 

So instead, I'm considering running integration tests on our machine that's connected to physical targets using Azure Pipelines self-hosted agent.

There are a few considerations:

  • Corporate policy regarding network security (I'll start asking around next week)
  • Pricing
    According to pricing for Azure DevOps, we need at minimum "User License: Basic Plan", which is free for the first 5 users.
  • Cost of maintenance
    The host machine and the Tizen devices attached to it.

Personally I think it's the best option to do CI for plugin integration tests and possibly future engine regression tests. Please share any ideas or suggestions.

TODOs:

  • write test tool script (reference: flutter-plugin-tools) #150
  • fix broken integration tests or exclude them in CI task: video_players, integration_test, etc #169 #182
  • write azure pipelinesgithub workflow script #169
  • think about how to let the tool know about unsupported device profiles of each plugin #191

[sqflite] The FFI implementation of sqflite_tizen

Source code

https://github.com/swift-kim/plugins/tree/sqflite/packages/sqflite

Usage

Add sqflite_tizen as a git package dependency in your pubspec.yaml.

dependencies:
  sqflite:
  sqflite_tizen:
    git: https://github.com/swift-kim/plugins
    ref: sqflite
    path: packages/sqflite

Current status

The following tests (from the sqflite example app) are currently failing. No critical error found. None of the errors are Tizen-specific.

  • Raw tests
    • Options: Not implemented by sqflite_common_ffi.
    • Debug mode (log): Partially implemented by sqflite_common_ffi.
    • without rowid: Bad test case (0 is returned on Tizen).
  • Open tests
    • open in transaction: A bug in sqflite_common_ffi.
    • Open non sqlite file: Bad test case (succeeds only on Android).
  • Type tests
    • blob: Not implemented by sqflite_common_ffi (see getSqlArguments in sqflite_ffi_impl.dart).
    • bool: Not implemented by sqflite_common_ffi.
  • Exp tests
    • sql dump file
  • Exception tests
    • Sqlite Exception
    • Sqlite batch Exception
    • Bind no argument (no iOS)
    • crash ios (no iOS)
    • Bind no parameter
    • Thread dead lock

#276 (comment)

WebViewController.loadUrl() fails with

I've been trying to use loadUrl() to change webview contents. But it fails with the error:

[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(Invalid Arguments, Invalid Arguments, null, null)

I'm pretty sure it should be "url" instead of "viewType" here, as this fixes the loadUrl().

if (GetValueFromEncodableMap(arguments, "viewType", &url)) {

BTW. You might consider including more details in logs or result->Error(), it would make tracking issues easier

device_info_tizen package won't build

I have added the device_info_tizen package to my pubspec.yaml and now my app won't build:

Exception: Failed to build Flutter plugins:
[PLATFORM] Wearable-4.0
[ARCHITECTURE] i586
[COMPILER] LLVM-10.0
[CONFIGURATION] Debug
[SBI] prdefine options = 
[SBI] command : cmd /c make.exe -f "H:\iot\Tizen\tools\ide\resources\native\Build\makefile" -r 
make -f H:\iot\Tizen\tools\ide\resources\native\Build/makefile.mk
H:\iot\Tizen\tools\smart-build-interface\..\msys2\usr\bin\make[1]: Entering directory '/h/Mullr/Mobile Apps/Flutter Apps/fitjo_smartwatch/.dart_tool/flutter_build/38e99696045987c54a921e2f779f805c/tizen_plugins'
preparing to build /c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src/device_info_tizen_plugin.cc
preparing to build /h/iot/FlutterTizen/flutter-tizen/bin/cache/artifacts/engine/common/cpp_client_wrapper/core_implementations.cc
preparing to build /h/iot/FlutterTizen/flutter-tizen/bin/cache/artifacts/engine/common/cpp_client_wrapper/plugin_registrar.cc
preparing to build /h/iot/FlutterTizen/flutter-tizen/bin/cache/artifacts/engine/common/cpp_client_wrapper/standard_codec.cc
H:\iot\Tizen\tools\ide\resources\native\Build/makefile.mk:160: warning: overriding recipe for target 'Debug'
H:\iot\Tizen\tools\ide\resources\native\Build/makefile.mk:157: warning: ignoring old recipe for target 'Debug'
  Building file: /c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src/device_info_tizen_plugin.cc
  Output Path ./Debug
  Invoking: C++ Compiler
  Building directory: Debug//c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src
"H:\iot\Tizen\tools\smart-build-interface/../llvm-10/bin/clang++.exe" -c "/c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src/device_info_tizen_plugin.cc" -o
"Debug//c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src/device_info_tizen_plugin.o" -DTIZEN_DEPRECATION -DDEPRECATION_WARNING  -DTIZEN_DEPRECATION -DDEPRECATION_WARNING -DFLUTTER_PLUGIN_IMPL    -I"pch" -g3 -D_DEBUG -O0 -Wall -c -fmessage-length=0
-std=c++11 -target i586-tizen-linux-gnueabi -gcc-toolchain "H:\iot\Tizen\tools\smart-build-interface/../i586-linux-gnueabi-gcc-9.2/" -ccc-gcc-name i586-linux-gnueabi-g++ -march=i586 -Wno-gnu -fstack-protector-strong -Wno-unused-command-line-argument -fdebug-default-version=3  -fPIC
--sysroot="H:/iot/Tizen/tools/smart-build-interface/../../platforms/tizen-4.0/wearable/rootstraps/wearable-4.0-emulator.core" -Werror-implicit-function-declaration  -lflutter_tizen_wearable -L/h/iot/FlutterTizen/flutter-tizen/bin/cache/artifacts/engine/tizen-x86-debug -std=c++17
-I/h/iot/FlutterTizen/flutter-tizen/bin/cache/artifacts/engine/common/cpp_client_wrapper/include -I/h/iot/FlutterTizen/flutter-tizen/bin/cache/artifacts/engine/common/public -I/c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/inc
-I/c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src -L/h/Mullr/Mobile Apps/Flutter Apps/fitjo_smartwatch/.dart_tool/flutter_build/38e99696045987c54a921e2f779f805c/tizen_plugins/lib -DWEARABLE_PROFILE -Wp,@./Debug/objs/platform_incs_file.inc
clang++: error: no such file or directory: 'Apps/Flutter'
clang++: error: no such file or directory: 'Apps/fitjo_smartwatch/.dart_tool/flutter_build/38e99696045987c54a921e2f779f805c/tizen_plugins/lib'
H:\iot\Tizen\tools\smart-build-interface\..\msys2\usr\bin\make[1]: *** [H:\iot\Tizen\tools\ide\resources\native\Build/makefile.mk:97: Debug//c/Users/joeco/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/device_info_tizen-2.0.0/tizen/src/device_info_tizen_plugin.o] Error 1
H:\iot\Tizen\tools\smart-build-interface\..\msys2\usr\bin\make[1]: Leaving directory '/h/Mullr/Mobile Apps/Flutter Apps/fitjo_smartwatch/.dart_tool/flutter_build/38e99696045987c54a921e2f779f805c/tizen_plugins'
make: *** [H:\iot\Tizen\tools\ide\resources\native\Build\makefile:27: app_build] Error 2
Total time: 00:00:01.572

If I remove that package, the app works fine and I can run it on an emulator and a real device so I don't think the problem is my Tizen installation.

I have tried running flutter-tizen clean and flutter-tizen pub get. I've also created new emulators but the issue remains.

Resolve lint issues reported by analyze

Remained issues:

  • info • 'RaisedButton' is deprecated and shouldn't be used. Use ElevatedButton instead. See the migration guide in flutter.dev/go/material-button-migration-guide). This feature was
    deprecated after v1.26.0-18.0.pre. • audioplayers/example/lib/main.dart:460:14 • deprecated_member_use
  • info • Omit type annotations for local variables • battery_plus/example/integration_test/battery_plus_test.dart:15:5 • omit_local_variable_types
  • info • Omit type annotations for local variables • battery_plus/example/integration_test/battery_plus_test.dart:16:5 • omit_local_variable_types
    info • Future results in async function bodies must be awaited or marked unawaited using package:pedantic • camera/example/tizen/flutter/main.dart:11:3 • unawaited_futures
  • info • Omit type annotations for local variables • connectivity_plus/example/integration_test/connectivity_plus_test.dart:23:7 • omit_local_variable_types
  • info • Omit type annotations for local variables • device_info_plus/example/integration_test/device_info_plus_test.dart:17:5 • omit_local_variable_types
  • info • Omit type annotations for local variables • device_info_plus/example/lib/main.dart:39:5 • omit_local_variable_types
    error • Unused import: 'dart:async' • flutter_tts/example/integration_test/flutter_tts_test.dart:3:8 • unused_import
  • info • Omit type annotations for local variables • flutter_tts/example/integration_test/flutter_tts_test.dart:12:5 • omit_local_variable_types
  • info • Don't cast a nullable value to a non nullable type • messageport/lib/src/messageport_manager.dart:29:9 • cast_nullable_to_non_nullable
  • info • Omit type annotations for local variables • package_info_plus/example/integration_test/package_info_plus_test.dart:16:5 • omit_local_variable_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/app_common.dart:11:9 • camel_case_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/app_common.dart:12:9 • camel_case_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/app_common.dart:13:9 • camel_case_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/app_common.dart:14:9 • camel_case_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/storage.dart:13:9 • camel_case_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/storage.dart:15:9 • camel_case_types
  • info • Name types using UpperCamelCase • path_provider/lib/src/storage.dart:17:9 • camel_case_types
  • info • Unused import: 'dart:async' • permission_handler/example/integration_test/permission_handler_test.dart:3:8 • unused_import
  • info • Avoid annotating types for function expression parameters • permission_handler/example/integration_test/permission_handler_test.dart:12:41 • avoid_types_on_closure_parameters
  • info • Avoid annotating types for function expression parameters • permission_handler/example/integration_test/permission_handler_test.dart:16:47 • avoid_types_on_closure_parameters
  • info • Avoid annotating types for function expression parameters • permission_handler/example/integration_test/permission_handler_test.dart:21:37 • avoid_types_on_closure_parameters
  • info • 'getImage' is deprecated and shouldn't be used. Switch to using pickImage instead • share_plus/example/lib/main.dart:69:62 • deprecated_member_use
  • error • Target of URI doesn't exist: 'package:test/test.dart' • video_player/example/test_driver/video_player_test.dart:7:8 • uri_does_not_exist
  • error • The function 'tearDownAll' isn't defined • video_player/example/test_driver/video_player_test.dart:11:3 • undefined_function
  • error • The function 'test' isn't defined • video_player/example/test_driver/video_player_test.dart:17:3 • undefined_function
  • error • The function 'expect' isn't defined • video_player/example/test_driver/video_player_test.dart:25:5 • undefined_function
  • info • Future results in async function bodies must be awaited or marked unawaited using package:pedantic • wakelock/example/integration_test/wakelock_test.dart:15:5 •
    unawaited_futures
  • info • Future results in async function bodies must be awaited or marked unawaited using package:pedantic • wakelock/example/integration_test/wakelock_test.dart:20:5 •
    unawaited_futures
  • info • Unused import: 'dart:io' • webview_flutter/example/lib/main.dart:9:8 • unused_import
  • info • DO use curly braces for all flow control structures • webview_flutter/lib/src/platform_view_tizen.dart:367:7 • curly_braces_in_flow_control_structures

Originally posted by @bbrto21 in #203 (comment)

[flutter_tts] PlatformException when `FlutterTts.setLanguage()` is called

I've tested with flutter_tts/example app.
When setLanaguage() is called through dropdown menu, below error happens.

E/ConsoleMessage( 4431): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: PlatformException(-1, Not supported method, null, null)
#0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
#1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
<asynchronous suspension>

flutter-tizen doctor -v

[✓] Flutter (Channel unknown, 2.5.1, on Ubuntu 20.04.2 LTS 5.11.0-37-generic, locale ko_KR.UTF-8)
    • Flutter version 2.5.1 at /home/flutter_tizen/flutter-tizen/flutter
    • Upstream repository unknown
    • Framework revision ffb2ecea52 (6주 전), 2021-09-17 15:26:33 -0400
    • Engine revision b3af521a05
    • Dart version 2.14.2

[✓] Tizen toolchain - develop for Tizen devices
    • Framework revision d5bf5a5635 (3일 전), 2021-10-25 10:32:10 +0900
    • Engine revision 7e8adde964
    • Tizen Studio 4.1.1 at /home/tizen-studio
    • .NET SDK 5.0.400 at /usr/bin/dotnet

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /home/Android/Sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: /opt/android-studio-4.1/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Android Studio (version 4.1)
    • Android Studio at /opt/android-studio-4.1/android-studio
    • Flutter plugin version 57.0.1
    • Dart plugin version 201.9380
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] Android Studio
    • Android Studio at /opt/android-studio
    • 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_242-release-1644-b3-6222593)

[✓] VS Code (version 1.57.1)
    • VS Code at /usr/share/code
    • Flutter extension version 3.24.0

[✓] Connected device (3 available)
    • Tizen m-0727-2 (mobile)        • emulator-26101  • flutter-tester • Tizen 6.0 (emulator)

Invalid use of EventChannel in some plugins

I analyzed some crash on TM1 recently and it turns out that there is a problem with use of EventChannel.

There are some places, where developers create EventChannel as local object which is deleted at the exit of the function. Unfortunately we can't do this, because EventChannel not only passes handlers to engine, but also keeps is_listening_ variable. This variable is used in binary_handler and also in SetStreamHandler to cancel listening - without it there might be some calls to handler even after removing the handler.
But as far as I know, everything on platform channel is being called on one thread, so there should be no issue if we would just remove is_listening_ from EventChannel and make it local to binary_helper lambda.
What do you think about this solution? One drawback is that we would need to make this change in upstream.

The second solution is to fix the code of plugins - wearable_rotary_plugin, video_player, sensors, connectivity and battery are affected.

I think that the second approach is better.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.