From e8d235f360d16364ace6bb7cd4f32f407aa1d98d Mon Sep 17 00:00:00 2001 From: Shimon Cohen Date: Sun, 30 Jul 2023 19:27:54 +0300 Subject: [PATCH 1/5] initial --- example/fonts/Medal.ttf | Bin 0 -> 1940 bytes example/icons/close.png | Bin 0 -> 233 bytes example/icons/share_medal.png | Bin 0 -> 735 bytes example/images/full_hack.png | Bin 0 -> 38291 bytes example/images/social_media_hack.png | Bin 0 -> 4673 bytes example/lib/choose_share_screen.dart | 56 ++++++++++++ example/lib/main.dart | 114 +------------------------ example/lib/medal_icons.dart | 26 ++++++ example/lib/share_button.dart | 53 ++++++++++++ example/lib/share_incident_screen.dart | 40 +++++++++ example/lib/social_media_menu.dart | 15 ++++ example/lib/yedidim_thanks.dart | 15 ++++ example/pubspec.yaml | 12 ++- 13 files changed, 218 insertions(+), 113 deletions(-) create mode 100644 example/fonts/Medal.ttf create mode 100644 example/icons/close.png create mode 100644 example/icons/share_medal.png create mode 100644 example/images/full_hack.png create mode 100644 example/images/social_media_hack.png create mode 100644 example/lib/choose_share_screen.dart create mode 100644 example/lib/medal_icons.dart create mode 100644 example/lib/share_button.dart create mode 100644 example/lib/share_incident_screen.dart create mode 100644 example/lib/social_media_menu.dart create mode 100644 example/lib/yedidim_thanks.dart diff --git a/example/fonts/Medal.ttf b/example/fonts/Medal.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dca15d8d8ea8bb208d3e31a20fe08686277ef1e1 GIT binary patch literal 1940 zcmd^AO-~zF6uoc8_JEC{#ng`4D19Qt#wpllh;T(Bib64ws0ks2Ry0yFjK?2nJY&WK z0=kL%u_~3aYS-N$HS0=|lKg_M+ODE1typwHr7jyOn}(kEJRwv{e?jl)y?5@pXYRZ2 zYCeb&QH<`8N`<-WH!kxp&+QVicfl@Sy`I;n_?090d+=AxrqTLi_~AYHe`2(1_D;2S zaQhP?wE~~lEu%7Y=Q-}D1B{6}2pu3VlwbJZZUYKm6>MzlgNkh>sI$SC@{~F(1MgvpCI3QzQfS zryp)rZ}nYzO0kai;L)$R4~5G0XkR^4--6pkN^rZ#q|nC{mcC%4xQNgVX(Aq_0!@+f ze(8f{>a`8up*JaXB7PDxyHPWcABU48B$W&dqsR+ZZLzyzM`c$L9oy@y?107?Do`k_ zf_;T8R%a_TeMpC$eyplX^fhE+Czv>~@=QW;8j)iJ1J$wRK(hc=s7J8kl;A@&C^aF$ zAJP%d-I?KwbAe@|?*F^>$OfDa+8}!+It3H`B>8-!>qq;_&v?QHC`${pOshnR3&n}z zgq}*Kk^@>qiwtJcnRIbL__~N(5dNTuoYT*+NFPfjfzJ-+8MHa}9?Rs|6uZcZQ%q03 z%~&y2OlQKGiDD{~&X1NCA1szf^T%N5e0Fwje{ME={ur>Q@qSI~GSjLS?dguiOf#BF zXlmMwYFdAMH?1a4CDiou2UkZIOBY$s_?5}R0{d~bJU=ozIx=7WexU;vRz-#ejQY&r5lA5NKN|E>*JsTx$Al17Oi^pRde}C6^`F`xo{ja)Ce}R`$1 z^oytjztcO0ccBzug*2KEunK-Dz#-rd102Se>}G%?;A;Vn(mP}aI7SKjMm+7IZtSy1 z_X5l)$|eG=P%oPfFy03y-wx2(ppWyl9qxi^IEKxQO~3AXZ9dJb_NMP!Uc+>qoar`4c-3`$%eGzNm92_lFIlxs z+wdfo(~9M_8?M90as}znS&royzEu%hw6|)y?^k)%bDO*rSNHwaWIlg# z51JvDTC_tRHPE{{`NU}$Y!<7IZ=H^BE~hmpIFub#gB&u@U57<6b#6r)`?wYVi zTK}~QrP8Z75jaCic%~h#;Wag>+D?B1*D;@mc!@~ZN ZsiVnWv1;zJqd=E1c)I$ztaD0e0s#4bPNx6> literal 0 HcmV?d00001 diff --git a/example/icons/share_medal.png b/example/icons/share_medal.png new file mode 100644 index 0000000000000000000000000000000000000000..8a101d58f4381f1123fb1435a9d00c597ca65a9d GIT binary patch literal 735 zcmV<50wDc~P)X1^@s6)5{gA00009a7bBm000XU z000XU0RWnu7ytkQkx4{BRCocsR8ex;Kn#`EZhxUSASbAScBY@?1SKcH{_6xj-~=Hj zD9n&d{|qMxJwf0*3E>9e2=uShcvqEdud|p!^U>+fcwn{KC+X>F0si5_LkB@Wu6l{; z0GJaXtN_vvAoZxVS+2iDn^%DaU*ekQV@v>51@xVN*X*>FJ%0fMcX+?hnl2B4Wqp40P z((La77GR!-wzZS7wBbmk`z5a7kbBs{fc25X6uXJ9`U zC`$@FmgIZB0hum5onAkcIY~aX}bFQRbrbU$<#bI?7p752~0j#-s!$2>U zNHQ-CV6LD{E_+lCfK}I{sNhYS#N}@aFhZKC1p0+T23!bNroaK)>8eu9EoJ8^nDJqR zJSNu3OENh~=a6WynuK*?O<69j6eKG|ypYi#3rhj z=}7Gw(g_h6Ay;J^u`}o&dhw7o^PW38I5x!Di-I=@v}9=vt$pv+kZDLqh)YsL<2$Eo zGKX5J&#aA*UzD-U`XHF)A|;kVDHmkwjKUetwQpu_NA23v8JF6Up+}`ET*jqnPCn6= z;*paPv)uj_jGaTyx5ocQhA=K(gkR7$3LiPZkhg6KdK4^sC9vagu(0Krw`m89(u||S zKZ1Ea40m3ITtBjM`OKtrel6a42BvUq*^(OFxZmtf_jn0P&-bg>{;dAz^&1rAQS@|| R9dZBw002ovPDHLkV1knpP)Gm( literal 0 HcmV?d00001 diff --git a/example/images/full_hack.png b/example/images/full_hack.png new file mode 100644 index 0000000000000000000000000000000000000000..39963efd128cffba9052de18463ded86b2a4861c GIT binary patch literal 38291 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 X@cww&y`NKa3HZTPv|-f`t-}8UzHHXx literal 0 HcmV?d00001 diff --git a/example/images/social_media_hack.png b/example/images/social_media_hack.png new file mode 100644 index 0000000000000000000000000000000000000000..ec30046a43918f16d91da290bd1d42ca2041e1c6 GIT binary patch literal 4673 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 const ShareIncidentScreen()), + ); + }, + ), + const SizedBox(height: 16), + const ShareButton( + Color.fromARGB(255, 88, 182, 108), + Colors.white, + shareImageText, + Icons.camera_alt_outlined, + ), + ], + ), + ), + ); + } +} diff --git a/example/lib/main.dart b/example/lib/main.dart index dda5554..e4fb18d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'choose_share_screen.dart'; void main() { runApp(const MyApp()); @@ -10,116 +11,9 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - // This is the theme of your application. - // - // TRY THIS: Try running your application with "flutter run". You'll see - // the application has a blue toolbar. Then, without quitting the app, - // try changing the seedColor in the colorScheme below to Colors.green - // and then invoke "hot reload" (save your changes or press the "hot - // reload" button in a Flutter-supported IDE, or press "r" if you used - // the command line to start the app). - // - // Notice that the counter didn't reset back to zero; the application - // state is not lost during the reload. To reset the state, use hot - // restart instead. - // - // This works for code too, not just values: Most code changes can be - // tested with just a hot reload. - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), - useMaterial3: true, - ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), - ); - } -} - -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, required this.title}); - - // This widget is the home page of your application. It is stateful, meaning - // that it has a State object (defined below) that contains fields that affect - // how it looks. - - // This class is the configuration for the state. It holds the values (in this - // case the title) provided by the parent (in this case the App widget) and - // used by the build method of the State. Fields in a Widget subclass are - // always marked "final". - - final String title; - - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - int _counter = 0; - - void _incrementCounter() { - setState(() { - // This call to setState tells the Flutter framework that something has - // changed in this State, which causes it to rerun the build method below - // so that the display can reflect the updated values. If we changed - // _counter without calling setState(), then the build method would not be - // called again, and so nothing would appear to happen. - _counter++; - }); - } - - @override - Widget build(BuildContext context) { - // This method is rerun every time setState is called, for instance as done - // by the _incrementCounter method above. - // - // The Flutter framework has been optimized to make rerunning build methods - // fast, so that you can just rebuild anything that needs updating rather - // than having to individually change instances of widgets. - return Scaffold( - appBar: AppBar( - // TRY THIS: Try changing the color here to a specific color (to - // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar - // change color while the other colors stay the same. - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - // Here we take the value from the MyHomePage object that was created by - // the App.build method, and use it to set our appbar title. - title: Text(widget.title), - ), - body: Center( - // Center is a layout widget. It takes a single child and positions it - // in the middle of the parent. - child: Column( - // Column is also a layout widget. It takes a list of children and - // arranges them vertically. By default, it sizes itself to fit its - // children horizontally, and tries to be as tall as its parent. - // - // Column has various properties to control how it sizes itself and - // how it positions its children. Here we use mainAxisAlignment to - // center the children vertically; the main axis here is the vertical - // axis because Columns are vertical (the cross axis would be - // horizontal). - // - // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" - // action in the IDE, or press "p" in the console), to see the - // wireframe for each widget. - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'You have pushed the button this many times:', - ), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), // This trailing comma makes auto-formatting nicer for build methods. + return const MaterialApp( + title: 'Story Editor', + home: ChooseShareScreen(), ); } } diff --git a/example/lib/medal_icons.dart b/example/lib/medal_icons.dart new file mode 100644 index 0000000..9b787ea --- /dev/null +++ b/example/lib/medal_icons.dart @@ -0,0 +1,26 @@ +/// Flutter icons Medal +/// Copyright (C) 2023 by original authors @ fluttericon.com, fontello.com +/// This font was generated by FlutterIcon.com, which is derived from Fontello. +/// +/// To use this font, place it in your fonts/ directory and include the +/// following in your pubspec.yaml +/// +/// flutter: +/// fonts: +/// - family: Medal +/// fonts: +/// - asset: fonts/Medal.ttf +/// +/// +/// +import 'package:flutter/widgets.dart'; + +class Medal { + Medal._(); + + static const _kFontFam = 'Medal'; + static const String? _kFontPkg = null; + + static const IconData medal = + IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg); +} diff --git a/example/lib/share_button.dart b/example/lib/share_button.dart new file mode 100644 index 0000000..b266608 --- /dev/null +++ b/example/lib/share_button.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; + +class ShareButton extends StatelessWidget { + const ShareButton( + this.backgroundColor, this.foregroundColor, this.text, this.icon, + {super.key, this.onPressed = doNothing}); + + final Color backgroundColor; + final Color foregroundColor; + final String text; + final IconData icon; + + final void Function() onPressed; + static void doNothing() {} + + @override + Widget build(BuildContext context) { + return OutlinedButton( + style: OutlinedButton.styleFrom( + backgroundColor: backgroundColor, + foregroundColor: foregroundColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(32), + ), + padding: const EdgeInsets.only( + top: 16, + left: 32, + right: 32, + bottom: 18, + ), + ), + onPressed: onPressed, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + text, + textAlign: TextAlign.right, + style: const TextStyle( + fontSize: 15, + fontFamily: 'Assistant', + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(width: 8), + Icon(icon), + ], + ), + ); + } +} diff --git a/example/lib/share_incident_screen.dart b/example/lib/share_incident_screen.dart new file mode 100644 index 0000000..4f2d603 --- /dev/null +++ b/example/lib/share_incident_screen.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; + +import 'social_media_menu.dart'; +import 'yedidim_thanks.dart'; + +class ShareIncidentScreen extends StatelessWidget { + const ShareIncidentScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container( + padding: const EdgeInsets.symmetric(vertical: 32), + alignment: Alignment.center, + child: Column( + children: [ + // const Row(children: [CloseButton()]), + const SizedBox(height: 40), + const YedidimThanks(), + const SizedBox(height: 32), + Text( + 'שיתוף באמצעות', + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.black.withOpacity(0.54), + fontSize: 18, + fontFamily: 'Assistant', + fontWeight: FontWeight.w300, + // height: 20, + letterSpacing: 0.50, + ), + ), + const SizedBox(height: 16), + const SocialMediaMenu(), + ], + ), + ), + ); + } +} diff --git a/example/lib/social_media_menu.dart b/example/lib/social_media_menu.dart new file mode 100644 index 0000000..0ed5d88 --- /dev/null +++ b/example/lib/social_media_menu.dart @@ -0,0 +1,15 @@ +import 'package:flutter/widgets.dart'; + +class SocialMediaMenu extends StatelessWidget { + const SocialMediaMenu({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + // color: Colors.blue, + child: const Image( + image: AssetImage('images/social_media_hack.png'), + ), + ); + } +} diff --git a/example/lib/yedidim_thanks.dart b/example/lib/yedidim_thanks.dart new file mode 100644 index 0000000..5d7a610 --- /dev/null +++ b/example/lib/yedidim_thanks.dart @@ -0,0 +1,15 @@ +import 'package:flutter/widgets.dart'; + +class YedidimThanks extends StatelessWidget { + const YedidimThanks({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + // color: Colors.blue, + child: const Image( + image: AssetImage('images/full_hack.png'), + ), + ); + } +} diff --git a/example/pubspec.yaml b/example/pubspec.yaml index cf5bdd5..cc1f3fd 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -61,9 +61,11 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - images/full_hack.png + - images/social_media_hack.png + - icons/share_medal.png + - icons/close.png # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware @@ -90,3 +92,7 @@ flutter: # # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages + fonts: + - family: Medal + fonts: + - asset: fonts/Medal.ttf \ No newline at end of file From 180085220ff3d87bf9fa9136e8ab855f2fa925d7 Mon Sep 17 00:00:00 2001 From: Shimon Cohen Date: Mon, 31 Jul 2023 17:54:41 +0300 Subject: [PATCH 2/5] instll imge_picker --- .flutter-plugins | 12 ++ .flutter-plugins-dependencies | 1 + .../flutter/generated_plugin_registrant.cc | 4 + example/linux/flutter/generated_plugins.cmake | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 2 + example/pubspec.lock | 159 +++++++++++++++++- example/pubspec.yaml | 1 + .../flutter/generated_plugin_registrant.cc | 3 + .../windows/flutter/generated_plugins.cmake | 1 + pubspec.yaml | 1 + 10 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 .flutter-plugins create mode 100644 .flutter-plugins-dependencies diff --git a/.flutter-plugins b/.flutter-plugins new file mode 100644 index 0000000..0221b6f --- /dev/null +++ b/.flutter-plugins @@ -0,0 +1,12 @@ +# This is a generated file; do not edit or check into version control. +file_selector_linux=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_selector_linux-0.9.2\\ +file_selector_macos=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_selector_macos-0.9.3+1\\ +file_selector_windows=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_selector_windows-0.9.3\\ +flutter_plugin_android_lifecycle=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_plugin_android_lifecycle-2.0.15\\ +image_picker=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker-1.0.1\\ +image_picker_android=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_android-0.8.7+4\\ +image_picker_for_web=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_for_web-2.2.0\\ +image_picker_ios=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_ios-0.8.8\\ +image_picker_linux=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_linux-0.2.1\\ +image_picker_macos=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_macos-0.2.1\\ +image_picker_windows=C:\\Users\\Shimon\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_windows-0.2.1\\ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies new file mode 100644 index 0000000..eb96929 --- /dev/null +++ b/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"image_picker_ios","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_ios-0.8.8\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_plugin_android_lifecycle-2.0.15\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_android-0.8.7+4\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]}],"macos":[{"name":"file_selector_macos","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_selector_macos-0.9.3+1\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_macos-0.2.1\\\\","native_build":false,"dependencies":["file_selector_macos"]}],"linux":[{"name":"file_selector_linux","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_selector_linux-0.9.2\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_linux-0.2.1\\\\","native_build":false,"dependencies":["file_selector_linux"]}],"windows":[{"name":"file_selector_windows","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_selector_windows-0.9.3\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_windows-0.2.1\\\\","native_build":false,"dependencies":["file_selector_windows"]}],"web":[{"name":"image_picker_for_web","path":"C:\\\\Users\\\\Shimon\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_for_web-2.2.0\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]}],"date_created":"2023-07-30 19:58:13.855595","version":"3.10.4"} \ No newline at end of file diff --git a/example/linux/flutter/generated_plugin_registrant.cc b/example/linux/flutter/generated_plugin_registrant.cc index e71a16d..64a0ece 100644 --- a/example/linux/flutter/generated_plugin_registrant.cc +++ b/example/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); } diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake index 2e1de87..2db3c22 100644 --- a/example/linux/flutter/generated_plugins.cmake +++ b/example/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_selector_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..14b5f7c 100644 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,8 @@ import FlutterMacOS import Foundation +import file_selector_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) } diff --git a/example/pubspec.lock b/example/pubspec.lock index bc7dff8..8f07139 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -41,6 +41,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.17.1" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + url: "https://pub.dev" + source: hosted + version: "0.3.3+4" cupertino_icons: dependency: "direct main" description: @@ -57,6 +65,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046" + url: "https://pub.dev" + source: hosted + version: "0.9.2" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412" + url: "https://pub.dev" + source: hosted + version: "0.9.3+1" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c" + url: "https://pub.dev" + source: hosted + version: "2.6.0" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26" + url: "https://pub.dev" + source: hosted + version: "0.9.3" flutter: dependency: "direct main" description: flutter @@ -70,11 +110,104 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" + url: "https://pub.dev" + source: hosted + version: "2.0.15" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + http: + dependency: transitive + description: + name: http + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + image_picker: + dependency: "direct main" + description: + name: image_picker + sha256: "6296e98782726d37f59663f0727d0e978eee1ced1ffed45ccaba591786a7f7b3" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + sha256: "8179b54039b50eee561676232304f487602e2950ffb3e8995ed9034d6505ca34" + url: "https://pub.dev" + source: hosted + version: "0.8.7+4" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b + url: "https://pub.dev" + source: hosted + version: "0.8.8" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831" + url: "https://pub.dev" + source: hosted + version: "0.2.1" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4 + url: "https://pub.dev" + source: hosted + version: "0.2.1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + sha256: c1134543ae2187e85299996d21c526b2f403854994026d575ae4cf30d7bb2a32 + url: "https://pub.dev" + source: hosted + version: "2.9.0" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952 + url: "https://pub.dev" + source: hosted + version: "0.2.1" js: dependency: transitive description: @@ -115,6 +248,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" path: dependency: transitive description: @@ -123,6 +264,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.8.3" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" sky_engine: dependency: transitive description: flutter @@ -183,6 +332,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.1" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" vector_math: dependency: transitive description: @@ -193,4 +350,4 @@ packages: version: "2.1.4" sdks: dart: ">=3.0.2 <4.0.0" - flutter: ">=1.17.0" + flutter: ">=3.3.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index cc1f3fd..6dd7007 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -30,6 +30,7 @@ environment: dependencies: flutter: sdk: flutter + image_picker: ^1.0.1 # The following adds the Cupertino Icons font to your application. diff --git a/example/windows/flutter/generated_plugin_registrant.cc b/example/windows/flutter/generated_plugin_registrant.cc index 8b6d468..77ab7a0 100644 --- a/example/windows/flutter/generated_plugin_registrant.cc +++ b/example/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); } diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake index b93c4c3..a423a02 100644 --- a/example/windows/flutter/generated_plugins.cmake +++ b/example/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_selector_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/pubspec.yaml b/pubspec.yaml index ff7791f..cb97517 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,6 +11,7 @@ environment: dependencies: flutter: sdk: flutter + image_picker: ^1.0.1 dev_dependencies: flutter_test: From 50163314f580cea563d3fd3dae7d8bbc2a7999ef Mon Sep 17 00:00:00 2001 From: Shimon Cohen Date: Mon, 31 Jul 2023 21:04:01 +0300 Subject: [PATCH 3/5] finish --- example/lib/choose_share_screen.dart | 44 ++++++++++++++++++++------ example/lib/share_button.dart | 1 - example/lib/share_image_secreen.dart | 43 +++++++++++++++++++++++++ example/lib/share_incident_screen.dart | 10 ++++-- 4 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 example/lib/share_image_secreen.dart diff --git a/example/lib/choose_share_screen.dart b/example/lib/choose_share_screen.dart index 1f1748d..1a5fc23 100644 --- a/example/lib/choose_share_screen.dart +++ b/example/lib/choose_share_screen.dart @@ -1,4 +1,9 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:story_editor_example/share_image_secreen.dart'; import 'medal_icons.dart'; import 'share_button.dart'; @@ -11,6 +16,16 @@ class ChooseShareScreen extends StatelessWidget { static const String shareIncidentText = 'שיתוף ארוע'; static const String shareImageText = 'שיתוף תמונה'; + static VoidCallback navigate(BuildContext context, Widget nextScreen) { + return () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ShareIncidentScreen(nextScreen)), + ); + } + + // void + @override Widget build(BuildContext context) { return Scaffold( @@ -33,20 +48,19 @@ class ChooseShareScreen extends StatelessWidget { const Color.fromARGB(255, 51, 108, 160), shareIncidentText, Medal.medal, - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => const ShareIncidentScreen()), - ); - }, + onPressed: navigate(context, const YedidimThanks()), ), const SizedBox(height: 16), - const ShareButton( - Color.fromARGB(255, 88, 182, 108), + ShareButton( + const Color.fromARGB(255, 88, 182, 108), Colors.white, shareImageText, Icons.camera_alt_outlined, + onPressed: () async { + var imageFile = await takePicture(); + if (imageFile == null || !context.mounted) return; + navigate(context, ImageShow(imageFile))(); + }, ), ], ), @@ -54,3 +68,15 @@ class ChooseShareScreen extends StatelessWidget { ); } } + +Future takePicture() async { + try { + final image = await ImagePicker().pickImage(source: ImageSource.camera); + if (image == null) return null; + return File(image.path); + } on Exception catch (e) { + // should catch only PlatformException + if (kDebugMode) print('Failed to pick image: $e'); + return null; + } +} diff --git a/example/lib/share_button.dart b/example/lib/share_button.dart index b266608..aa3b713 100644 --- a/example/lib/share_button.dart +++ b/example/lib/share_button.dart @@ -37,7 +37,6 @@ class ShareButton extends StatelessWidget { children: [ Text( text, - textAlign: TextAlign.right, style: const TextStyle( fontSize: 15, fontFamily: 'Assistant', diff --git a/example/lib/share_image_secreen.dart b/example/lib/share_image_secreen.dart new file mode 100644 index 0000000..927295a --- /dev/null +++ b/example/lib/share_image_secreen.dart @@ -0,0 +1,43 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; + +class ImageShow extends StatelessWidget { + const ImageShow( + this.imageToShare, { + super.key, + }); + + final File imageToShare; + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Image(image: FileImage(imageToShare)), + const Positioned( + top: 10, + right: 10, + child: Text("Logo Here"), + ), + const Positioned( + bottom: 15, + left: 0, + right: 0, + child: Align( + alignment: Alignment.center, + child: Text( + "!גאה להתנדב בידידים", + style: TextStyle( + fontSize: 20, + fontFamily: 'Assistant', + fontWeight: FontWeight.w600, + color: Colors.white, + ), + ), + ), + ), + ], + ); + } +} diff --git a/example/lib/share_incident_screen.dart b/example/lib/share_incident_screen.dart index 4f2d603..2f02981 100644 --- a/example/lib/share_incident_screen.dart +++ b/example/lib/share_incident_screen.dart @@ -1,10 +1,14 @@ import 'package:flutter/material.dart'; import 'social_media_menu.dart'; -import 'yedidim_thanks.dart'; class ShareIncidentScreen extends StatelessWidget { - const ShareIncidentScreen({super.key}); + const ShareIncidentScreen( + this.imageWidget, { + super.key, + }); + + final Widget imageWidget; @override Widget build(BuildContext context) { @@ -16,7 +20,7 @@ class ShareIncidentScreen extends StatelessWidget { children: [ // const Row(children: [CloseButton()]), const SizedBox(height: 40), - const YedidimThanks(), + imageWidget, const SizedBox(height: 32), Text( 'שיתוף באמצעות', From 5127f8541a611cffbf763fc7c8d0572da89c13c0 Mon Sep 17 00:00:00 2001 From: Shimon Cohen Date: Mon, 31 Jul 2023 21:16:22 +0300 Subject: [PATCH 4/5] nothing --- example/lib/share_image_secreen.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/example/lib/share_image_secreen.dart b/example/lib/share_image_secreen.dart index 927295a..f2da2c0 100644 --- a/example/lib/share_image_secreen.dart +++ b/example/lib/share_image_secreen.dart @@ -41,3 +41,4 @@ class ImageShow extends StatelessWidget { ); } } +//sdfs \ No newline at end of file From e7c11453610c2e806e8375b1b838b01f92059b4e Mon Sep 17 00:00:00 2001 From: Shimon Cohen Date: Mon, 31 Jul 2023 21:21:53 +0300 Subject: [PATCH 5/5] Revert "nothing" This reverts commit 5127f8541a611cffbf763fc7c8d0572da89c13c0. --- example/lib/share_image_secreen.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/example/lib/share_image_secreen.dart b/example/lib/share_image_secreen.dart index f2da2c0..927295a 100644 --- a/example/lib/share_image_secreen.dart +++ b/example/lib/share_image_secreen.dart @@ -41,4 +41,3 @@ class ImageShow extends StatelessWidget { ); } } -//sdfs \ No newline at end of file