Skip to content

v1: add flet-dev extensions to client + remove charts #5304

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 44 commits into from
Jun 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
c930989
Lottie
ndonkoHenri May 12, 2025
1e57c86
create `utils/geometry.dart` with `Rect` and `Size`
ndonkoHenri May 14, 2025
4f3a666
add flet-rive to client
ndonkoHenri May 14, 2025
8a210c7
Merge branch 'v1' into v1-extensions
ndonkoHenri May 27, 2025
fa0d961
uncomment flet-rive in pubspec.yaml
ndonkoHenri May 27, 2025
103d992
fix missing colors
ndonkoHenri May 27, 2025
f6f23ce
fix imports
ndonkoHenri May 27, 2025
be4df8b
add flet-map pubspec.yaml
ndonkoHenri May 27, 2025
545774c
add flet-map to main.dart
ndonkoHenri May 27, 2025
74cf4ea
add flet-webview to client
ndonkoHenri May 27, 2025
63ac605
more docs
ndonkoHenri May 28, 2025
b045932
Merge branch 'refs/heads/v1' into v1-extensions
ndonkoHenri May 28, 2025
a610d4d
remove Duration.from_datetime
ndonkoHenri May 28, 2025
3084163
document border utils | BorderStyle
ndonkoHenri Jun 3, 2025
ef634c0
document border-radius utils
ndonkoHenri Jun 3, 2025
2ba24ae
flet-audio-recorder package
ndonkoHenri Jun 4, 2025
4d5ea4c
merge 'v1' branch
ndonkoHenri Jun 4, 2025
ca7f5e1
add permission-handler
ndonkoHenri Jun 5, 2025
375b9ba
edit Podfile to include permission macros
ndonkoHenri Jun 7, 2025
cffde99
snackbar action
ndonkoHenri Jun 9, 2025
7045068
add flet_geolocator to client
ndonkoHenri Jun 9, 2025
49241df
add flet-flashlight to client
ndonkoHenri Jun 9, 2025
301d35f
flet-ads in client
ndonkoHenri Jun 10, 2025
0c655b3
add Tooltip.decoration prop
ndonkoHenri Jun 11, 2025
ac9c27e
merge v1 branch in v1-extensions
ndonkoHenri Jun 12, 2025
6621c0b
add flet-datatable2 to client
ndonkoHenri Jun 12, 2025
023b26f
comment out webview_flutter_android override
ndonkoHenri Jun 12, 2025
c01f4f0
improve TextSpan
ndonkoHenri Jun 15, 2025
cc80c60
create StringExtension (trim* methods)
ndonkoHenri Jun 15, 2025
80d2598
introduce `BaseControl._internal`
ndonkoHenri Jun 16, 2025
287e13b
ConstrainedControl based on BaseControl
ndonkoHenri Jun 16, 2025
4f681f3
dart: remove chart controls
ndonkoHenri Jun 16, 2025
97ec978
python: remove chart controls
ndonkoHenri Jun 16, 2025
2f13bdf
add flet-charts to client
ndonkoHenri Jun 16, 2025
41aaa43
Fixed LineChart tests
FeodorFitsner Jun 17, 2025
6383cd3
dart: `control.internals` | skip badge on-demand
ndonkoHenri Jun 17, 2025
1d0fd4c
`control.internals` of type `Map<String, dynamic>?
ndonkoHenri Jun 17, 2025
7692b8f
Merge branch 'v1' into v1-extensions
FeodorFitsner Jun 18, 2025
9f78677
Bump Flutter dependencies
FeodorFitsner Jun 18, 2025
4241e40
Suppress websockets and uvicorn warnings in dev mode
FeodorFitsner Jun 18, 2025
68d2d7c
Install libasound2-dev on Linux
FeodorFitsner Jun 19, 2025
990b5f1
make `EventControlType` globally available | remove `OptionalEventCal…
ndonkoHenri Jun 19, 2025
fb8e701
fix tests | revert OptionalControlEventHandler
ndonkoHenri Jun 19, 2025
b9ddd84
fix test_events.py
ndonkoHenri Jun 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ for:
install:
- . ci/common.sh
- sudo apt update --allow-releaseinfo-change
- sudo apt install -y clang libgtk-3-dev
- sudo apt install -y clang libgtk-3-dev libasound2-dev
- sh: |
if [[ "$PACKAGE_NAME" == "flet-desktop" ]]; then
sudo apt install -y libmpv-dev mpv libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
Expand Down
18 changes: 18 additions & 0 deletions client/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,23 @@ end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)

target.build_configurations.each do |config|
# You can remove unused permissions here
# for more infomation: https://github.com/Baseflow/flutter-permission-handler/blob/main/permission_handler_apple/ios/Classes/PermissionHandlerEnums.h
# e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',

## dart: PermissionGroup.microphone
'PERMISSION_MICROPHONE=1',

## dart: PermissionGroup.photos
'PERMISSION_PHOTOS=1',

## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION_WHENINUSE=1',
]
end
end
end
131 changes: 129 additions & 2 deletions client/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,41 +1,168 @@
PODS:
- audioplayers_darwin (0.0.1):
- Flutter
- device_info_plus (0.0.1):
- Flutter
- DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.9)
- DKImagePickerController/PhotoGallery (4.3.9):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.9)
- DKPhotoGallery (0.0.19):
- DKPhotoGallery/Core (= 0.0.19)
- DKPhotoGallery/Model (= 0.0.19)
- DKPhotoGallery/Preview (= 0.0.19)
- DKPhotoGallery/Resource (= 0.0.19)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.19):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Flutter (1.0.0)
- integration_test (0.0.1):
- Flutter
- media_kit_libs_ios_video (1.0.4):
- Flutter
- media_kit_video (0.0.1):
- Flutter
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.3.0):
- Flutter
- record_ios (1.0.0):
- Flutter
- rive_common (0.0.1):
- Flutter
- SDWebImage (5.20.0):
- SDWebImage/Core (= 5.20.0)
- SDWebImage/Core (5.20.0)
- sensors_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- SwiftyGif (5.4.5)
- url_launcher_ios (0.0.1):
- Flutter
- volume_controller (0.0.1):
- Flutter
- wakelock_plus (0.0.1):
- Flutter
- webview_flutter_wkwebview (0.0.1):
- Flutter
- FlutterMacOS

DEPENDENCIES:
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- integration_test (from `.symlinks/plugins/integration_test/ios`)
- media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`)
- media_kit_video (from `.symlinks/plugins/media_kit_video/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- record_ios (from `.symlinks/plugins/record_ios/ios`)
- rive_common (from `.symlinks/plugins/rive_common/ios`)
- sensors_plus (from `.symlinks/plugins/sensors_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- volume_controller (from `.symlinks/plugins/volume_controller/ios`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`)

SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- SDWebImage
- SwiftyGif

EXTERNAL SOURCES:
audioplayers_darwin:
:path: ".symlinks/plugins/audioplayers_darwin/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
integration_test:
:path: ".symlinks/plugins/integration_test/ios"
media_kit_libs_ios_video:
:path: ".symlinks/plugins/media_kit_libs_ios_video/ios"
media_kit_video:
:path: ".symlinks/plugins/media_kit_video/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
record_ios:
:path: ".symlinks/plugins/record_ios/ios"
rive_common:
:path: ".symlinks/plugins/rive_common/ios"
sensors_plus:
:path: ".symlinks/plugins/sensors_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
volume_controller:
:path: ".symlinks/plugins/volume_controller/ios"
wakelock_plus:
:path: ".symlinks/plugins/wakelock_plus/ios"
webview_flutter_wkwebview:
:path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"

SPEC CHECKSUMS:
audioplayers_darwin: ccf9c770ee768abb07e26d90af093f7bab1c12ab
device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854
media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
record_ios: fee1c924aa4879b882ebca2b4bce6011bcfc3d8b
rive_common: dd421daaf9ae69f0125aa761dd96abd278399952
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
sensors_plus: 6a11ed0c2e1d0bd0b20b4029d3bad27d96e0c65b
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12
wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
webview_flutter_wkwebview: 1821ceac936eba6f7984d89a9f3bcb4dea99ebb2

PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011
PODFILE CHECKSUM: 8d1bc72cfc7d4e7c18bda0011338a2a374fe0e56

COCOAPODS: 1.14.3
COCOAPODS: 1.16.2
18 changes: 18 additions & 0 deletions client/ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
58A4996EE779406784CD4C79 /* [CP] Embed Pods Frameworks */,
66843B3D06C83DEA7E765D27 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
Expand Down Expand Up @@ -252,6 +253,23 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
66843B3D06C83DEA7E765D27 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
Expand Down
23 changes: 17 additions & 6 deletions client/ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,31 @@
<false />
<key>ITSAppUsesNonExemptEncryption</key>
<false />
<key>NSPhotoLibraryUsageDescription</key>
<string>The app needs access to photo library, so that photos can be selected.</string>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>

<key>UIApplicationSupportsIndirectInputEvents</key>
<true />
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true />
</dict>

<!-- Permission options for the `photos` -->
<key>NSPhotoLibraryUsageDescription</key>
<string>The app needs access to photo library, so that photos can be selected.</string>

<!-- Needed by `flet-ads` -->
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>

<!-- Permission options for the `microphone` -->
<!-- Needed by `flet-audio-recorder` -->
<key>NSMicrophoneUsageDescription</key>
<string>Audio Recording</string>
<string>This app needs access to microphone.</string>

<!-- Permission options for the `location` -->
<!-- Needed by `flet-geolocator` -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<string>This app needs access to location.</string>
</dict>
</plist>
47 changes: 26 additions & 21 deletions client/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
import 'dart:io';

import 'package:flet/flet.dart';
// import 'package:flet_ads/flet_ads.dart' as flet_ads;
import 'package:flet_ads/flet_ads.dart' as flet_ads;
// --FAT_CLIENT_START--
import 'package:flet_audio/flet_audio.dart' as flet_audio;
// --FAT_CLIENT_END--
// import 'package:flet_audio_recorder/flet_audio_recorder.dart'
// as flet_audio_recorder;
// import "package:flet_flashlight/flet_flashlight.dart" as flet_flashlight;
// import 'package:flet_geolocator/flet_geolocator.dart' as flet_geolocator;
// import 'package:flet_lottie/flet_lottie.dart' as flet_lottie;
// import 'package:flet_map/flet_map.dart' as flet_map;
// import 'package:flet_permission_handler/flet_permission_handler.dart'
// as flet_permission_handler;
// import 'package:flet_rive/flet_rive.dart' as flet_rive;
import 'package:flet_audio_recorder/flet_audio_recorder.dart'
as flet_audio_recorder;
import 'package:flet_datatable2/flet_datatable2.dart' as flet_datatable2;
import "package:flet_flashlight/flet_flashlight.dart" as flet_flashlight;
import 'package:flet_geolocator/flet_geolocator.dart' as flet_geolocator;
import 'package:flet_lottie/flet_lottie.dart' as flet_lottie;
import 'package:flet_map/flet_map.dart' as flet_map;
import 'package:flet_permission_handler/flet_permission_handler.dart'
as flet_permission_handler;
import 'package:flet_rive/flet_rive.dart' as flet_rive;
// --FAT_CLIENT_START--
import 'package:flet_video/flet_video.dart' as flet_video;
// --FAT_CLIENT_END--
// import 'package:flet_webview/flet_webview.dart' as flet_webview;
import 'package:flet_webview/flet_webview.dart' as flet_webview;
import 'package:flet_charts/flet_charts.dart' as flet_charts;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
Expand All @@ -33,21 +35,24 @@ void main([List<String>? args]) async {
await setupDesktop();

WidgetsFlutterBinding.ensureInitialized();
List<FletExtension> extensions = [];
List<FletExtension> extensions = [
flet_audio_recorder.Extension(),
flet_geolocator.Extension(),
flet_permission_handler.Extension(),
flet_lottie.Extension(),
flet_map.Extension(),
flet_ads.Extension(),
flet_rive.Extension(),
flet_webview.Extension(),
flet_flashlight.Extension(),
flet_datatable2.Extension(),
flet_charts.Extension(),
];

// --FAT_CLIENT_START--
extensions.add(flet_audio.Extension());
extensions.add(flet_video.Extension());
// --FAT_CLIENT_END--
// flet_audio_recorder.ensureInitialized();
// flet_geolocator.ensureInitialized();
// flet_permission_handler.ensureInitialized();
// flet_lottie.ensureInitialized();
// flet_map.ensureInitialized();
// flet_ads.ensureInitialized();
// flet_rive.ensureInitialized();
// flet_webview.ensureInitialized();
// flet_flashlight.ensureInitialized();

// initialize extensions
for (var extension in extensions) {
Expand Down
12 changes: 12 additions & 0 deletions client/linux/flutter/generated_plugin_registrant.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
#include <audioplayers_linux/audioplayers_linux_plugin.h>
#include <media_kit_libs_linux/media_kit_libs_linux_plugin.h>
#include <media_kit_video/media_kit_video_plugin.h>
#include <record_linux/record_linux_plugin.h>
#include <rive_common/rive_plugin.h>
#include <screen_retriever_linux/screen_retriever_linux_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h>
#include <volume_controller/volume_controller_plugin.h>
#include <window_manager/window_manager_plugin.h>
#include <window_to_front/window_to_front_plugin.h>

Expand All @@ -24,12 +27,21 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) media_kit_video_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitVideoPlugin");
media_kit_video_plugin_register_with_registrar(media_kit_video_registrar);
g_autoptr(FlPluginRegistrar) record_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "RecordLinuxPlugin");
record_linux_plugin_register_with_registrar(record_linux_registrar);
g_autoptr(FlPluginRegistrar) rive_common_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "RivePlugin");
rive_plugin_register_with_registrar(rive_common_registrar);
g_autoptr(FlPluginRegistrar) screen_retriever_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverLinuxPlugin");
screen_retriever_linux_plugin_register_with_registrar(screen_retriever_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
g_autoptr(FlPluginRegistrar) volume_controller_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "VolumeControllerPlugin");
volume_controller_plugin_register_with_registrar(volume_controller_registrar);
g_autoptr(FlPluginRegistrar) window_manager_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin");
window_manager_plugin_register_with_registrar(window_manager_registrar);
Expand Down
Loading