diff --git a/apps/dive_app/pubspec.lock b/apps/dive_app/pubspec.lock index 575e516..1dbdf85 100644 --- a/apps/dive_app/pubspec.lock +++ b/apps/dive_app/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: bloc - sha256: "658a5ae59edcf1e58aac98b000a71c762ad8f46f1394c34a52050cafb3e11a80" + sha256: "3820f15f502372d979121de1f6b97bfcf1630ebff8fe1d52fb2b0bfa49be5b49" url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.1.2" boolean_selector: dependency: transitive description: @@ -53,26 +53,26 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" cross_file: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c" url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.3+6" crypto: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" dive: dependency: "direct main" description: @@ -114,74 +114,74 @@ packages: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.1" - file: + version: "2.1.0" + file_selector: dependency: transitive description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + name: file_selector + sha256: "1d2fde93dddf634a9c3c0faa748169d7ac0d83757135555707e52f02c017ad4f" url: "https://pub.dev" source: hosted - version: "6.1.4" - file_selector: + version: "0.9.5" + file_selector_android: dependency: transitive description: - name: file_selector - sha256: "1ebc23f487172ac2cb9ead80fa2fab09af75e1e8239cbf8ef6d62b623991f785" + name: file_selector_android + sha256: d41e165d6f798ca941d536e5dc93494d50e78c571c28ad60cfe0b0fefeb9f1e7 url: "https://pub.dev" source: hosted - version: "0.9.2+4" + version: "0.5.0+3" file_selector_ios: dependency: transitive description: name: file_selector_ios - sha256: "27b84fd2e6a11db76916927b0ff71cb2d0187abe262203147d6b054f12d156fa" + sha256: b3fbdda64aa2e335df6e111f6b0f1bb968402ed81d2dd1fa4274267999aa32c2 url: "https://pub.dev" source: hosted - version: "0.5.1+1" + version: "0.5.1+6" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "39eb2bec65a532ff81816123ee0f08d4993ee2a3cd82d88c7e4b64275e565b54" + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" url: "https://pub.dev" source: hosted - version: "0.9.1+2" + version: "0.9.2+1" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: f97fc9517ae55648262b25053daaefa2894bb817af52efb3fa3826db02c985c5 + sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6 url: "https://pub.dev" source: hosted - version: "0.9.0+6" + version: "0.9.3+3" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: "98b3f98effcc135bd951b34b575886620ce208d3ff60e3b61cbaea9e2e00f54b" + sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.6.1" file_selector_web: dependency: transitive description: name: file_selector_web - sha256: dd961a76a1954225b407313356f41cc106ccffc764a1c30764cc6fe09b109932 + sha256: dc6622c4d66cb1bee623ddcc029036603c6cc45c85e4a775bb06008d61c809c1 url: "https://pub.dev" source: hosted - version: "0.9.0+4" + version: "0.9.2+1" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "072276217cbb098f308925034eac92fa490a202807f97ebb2ee7ab12c2764144" + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 url: "https://pub.dev" source: hosted - version: "0.9.1+6" + version: "0.9.3+1" flutter: dependency: "direct main" description: flutter @@ -191,18 +191,18 @@ packages: dependency: transitive description: name: flutter_bloc - sha256: "434951eea948dbe87f737b674281465f610b8259c16c097b8163ce138749a775" + sha256: e74efb89ee6945bcbce74a5b3a5a3376b088e5f21f55c263fc38cbdc6237faae url: "https://pub.dev" source: hosted - version: "8.1.2" + version: "8.1.3" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" flutter_localizations: dependency: "direct main" description: flutter @@ -212,10 +212,10 @@ packages: dependency: transitive description: name: flutter_riverpod - sha256: "3ea325c2de7ef2589023413c489875467730b2c1d822759efedd3e0e28a906c9" + sha256: bdba94be666ecb1beeb0f5a748d96cdd6a37215f27e6b48c7673b95cecb800c8 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.4" flutter_test: dependency: "direct dev" description: flutter @@ -230,10 +230,10 @@ packages: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "1.1.0" http_parser: dependency: transitive description: @@ -246,10 +246,10 @@ packages: dependency: "direct main" description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.18.1" js: dependency: transitive description: @@ -262,26 +262,26 @@ packages: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.1" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -310,74 +310,66 @@ packages: dependency: transitive description: name: path_provider - sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "2.1.1" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "019f18c9c10ae370b08dce1f3e3b73bc9f58e7f087bb5e921f06529438ac0ae7" + sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" url: "https://pub.dev" source: hosted - version: "2.0.24" + version: "2.2.0" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "026b97a6c29da75181a37aae2eba9227f5fe13cb2838c6b975ce209328b8ab4e" + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.3.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.10" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130 + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.1" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.3" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "2.1.6" provider: dependency: transitive description: @@ -390,10 +382,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "7da5a0febdb7fd0e4340f7b7023cb8f17cf7acd405b1e67a0e98bf574085bfa5" + sha256: "2af3d127a6e4e34b89b8f1f018086f5ded04b8e538174f0510bba3e4c0d878b1" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.4" sky_engine: dependency: transitive description: flutter @@ -403,10 +395,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -419,10 +411,10 @@ packages: dependency: transitive description: name: state_notifier - sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289" + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb url: "https://pub.dev" source: hosted - version: "0.7.2+1" + version: "1.0.0" stream_channel: dependency: transitive description: @@ -451,18 +443,18 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.0" typed_data: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" uuid: dependency: transitive description: @@ -479,22 +471,46 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" win32: dependency: transitive description: name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "5.0.9" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.3" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + yaml_writer: + dependency: transitive + description: + name: yaml_writer + sha256: "76740047e3d4b1687c588bc8cb3466bea55a7d915a91bb23e99ea2a8c58337b6" + url: "https://pub.dev" + source: hosted + version: "1.0.3" sdks: - dart: ">=3.0.0-0 <4.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.7.0" diff --git a/packages/dive_ui/README.md b/packages/dive_ui/README.md index 4f55515..5e57869 100644 --- a/packages/dive_ui/README.md +++ b/packages/dive_ui/README.md @@ -61,7 +61,7 @@ If you run into any issues with these steps, please create a Dive GitHub issue [here](https://github.com/larryaasen/dive/issues). # Video Widgets -* DiveSourceCard - stack, gear menu, child +* DiveSourceCard - Provides a child, normally a [DivePreview], with a [DiveSourceMenu] gear button displayed on top. * DiveMediaPreview - stack, text, buttons * DiveMeterPreview - A [DivePreview] with a [DiveAudioMeter] overlay using a [DiveAudioMeterSource]. * DivePreview - A widget showing a preview of a video/image frame using a [Texture] widget. @@ -90,7 +90,7 @@ and DiveMediaStopButton. * DiveStreamPlayButton - Streaming play button. * DiveAspectRatio - A widget that will size the child to a specific aspect ratio. * DiveGrid - A grid of widgets that maintains the aspect ratio. -* DiveSourceMenu - +* DiveSourceMenu - Provides a menu with a list of selectable video sources from [elements]. It also provides a button that when tapped displays the menu. * DiveSubMenu - A popup menu. * DiveImagePickerButton - An icon button that presents the image file picker dialog. * DiveVideoPickerButton - An icon button that presents the video file picker dialog. diff --git a/packages/dive_ui/example/lib/dive_caster.dart b/packages/dive_ui/example/lib/dive_caster.dart index 118c5bd..8cec3b3 100644 --- a/packages/dive_ui/example/lib/dive_caster.dart +++ b/packages/dive_ui/example/lib/dive_caster.dart @@ -2,7 +2,6 @@ import 'package:dive/dive.dart'; import 'package:dive_ui/dive_caster.dart'; import 'package:dive_ui/dive_ui_widgets.dart'; import 'package:flutter/widgets.dart'; -import 'package:path/path.dart' as path; import 'package:path_provider/path_provider.dart'; /// Dive Caster Multi Camera Streaming and Recording diff --git a/packages/dive_ui/lib/dive_caster.dart b/packages/dive_ui/lib/dive_caster.dart index 64c964b..3d31d53 100644 --- a/packages/dive_ui/lib/dive_caster.dart +++ b/packages/dive_ui/lib/dive_caster.dart @@ -335,7 +335,16 @@ class DiveCasterContentArea extends StatelessWidget { } Widget _grid() { - final items = List.generate(12, (index) => DivePreview()); + final items = List.generate(12, (index) { + return DiveSourceCard( + // item: item, + child: DivePreview( + // controller: state.videoSources.length == 0 ? null : (state.videoSources.first).controller, + controller: null, + aspectRatio: DiveCoreAspectRatio.HD.ratio), + elements: elements, + ); + }); return GridView.count( primary: false, @@ -501,7 +510,8 @@ class _DiveHeaderButtonState extends State { setState(() => _hovering = false); }, child: SizedBox( - height: double.infinity, + width: 160.0, + // height: double.infinity, child: TextButton( style: style, onPressed: () { diff --git a/packages/dive_ui/lib/dive_ui_widgets.dart b/packages/dive_ui/lib/dive_ui_widgets.dart index f28c50b..2c0db95 100644 --- a/packages/dive_ui/lib/dive_ui_widgets.dart +++ b/packages/dive_ui/lib/dive_ui_widgets.dart @@ -58,12 +58,18 @@ class DiveUI { static set iconSet(DiveIconSet iconSet) => _iconSet = iconSet; } +/// A class to provide a [child], normally a [DivePreview], with a [DiveSourceMenu] gear button displayed +/// on top. class DiveSourceCard extends StatefulWidget { - DiveSourceCard( - {required this.child, required this.item, required this.elements, this.referencePanels, this.panel}); + /// Provides a [child], normally a [DivePreview], with a [DiveSourceMenu] gear + /// button displayed on top. + DiveSourceCard({required this.child, this.item, required this.elements, this.referencePanels, this.panel}); final Widget child; - final DiveSceneItem item; + + /// Used by the [DiveSourceMenu]. + final DiveSceneItem? item; + final DiveCoreElements elements; final DiveReferencePanelsCubit? referencePanels; final DiveReferencePanel? panel; @@ -249,11 +255,13 @@ class DiveGrid extends StatelessWidget { } } +// A class to provide a source menu. class DiveSourceMenu extends StatefulWidget { - DiveSourceMenu( - {required this.item, required this.elements, this.referencePanels, this.panel, this.onDisplayed}); + /// Provides a menu with a list of selectable video sources from [elements]. It also provides a button + /// that when tapped displays the menu. + DiveSourceMenu({this.item, required this.elements, this.referencePanels, this.panel, this.onDisplayed}); - final DiveSceneItem item; + final DiveSceneItem? item; final DiveCoreElements elements; final DiveReferencePanelsCubit? referencePanels; final DiveReferencePanel? panel;