Initial commit
							
								
								
									
										3
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| # Default ignored files | ||||
| /shelf/ | ||||
| /workspace.xml | ||||
							
								
								
									
										1
									
								
								.idea/.name
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| client | ||||
							
								
								
									
										660
									
								
								.idea/libraries/Dart_Packages.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,660 @@ | ||||
| <component name="libraryTable"> | ||||
|   <library name="Dart Packages" type="DartPackagesLibraryType"> | ||||
|     <properties> | ||||
|       <option name="packageNameToDirsMap"> | ||||
|         <entry key="another_flushbar"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/another_flushbar-1.12.29/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="another_transformer_page_view"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/another_transformer_page_view-2.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="archive"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.3/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="args"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="async"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="boolean_selector"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="bubble"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/bubble-1.2.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="characters"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="clock"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="collection"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="convert"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/convert-3.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="crypto"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="csslib"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/csslib-0.17.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="cupertino_icons"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="dio"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/dio-4.0.6/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="fake_async"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="ffi"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="file"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="flutter"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/packages/flutter/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="flutter_lints"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="flutter_login"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_login-4.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="flutter_native_splash"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.14/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="flutter_test"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/packages/flutter_test/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="flutter_web_plugins"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/packages/flutter_web_plugins/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="font_awesome_flutter"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-10.2.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="html"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/html-0.15.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="http"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="http_parser"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="image"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/image-3.2.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="intl"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.17.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="jiffy"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/jiffy-5.0.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="js"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="lints"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="matcher"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="material_color_utilities"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="meta"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="nested"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/nested-1.0.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="path"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="path_provider_linux"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="path_provider_platform_interface"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="path_provider_windows"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="petitparser"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-5.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="platform"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="plugin_platform_interface"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="pointycastle"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/pointycastle-3.6.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="process"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="provider"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/provider-6.0.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="quiver"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-3.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.15/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_android"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.14/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_ios"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_ios-2.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_linux"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_macos"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-2.0.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_platform_interface"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_web"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="shared_preferences_windows"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="sign_in_button"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/sign_in_button-3.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="sky_engine"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/bin/cache/pkg/sky_engine/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="source_span"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="stack_trace"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="stream_channel"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="string_scanner"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="term_glyph"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="test_api"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="typed_data"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="universal_io"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/universal_io-2.0.4/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.6/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_android"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.21/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_ios"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.17/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_linux"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_macos"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_platform_interface"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_platform_interface-2.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_web"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.13/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="url_launcher_windows"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="vector_math"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="web_socket_channel"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.2.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="webdav_client"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/webdav_client-1.1.8/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="win32"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="xdg_directories"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+2/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="xml"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|         <entry key="yaml"> | ||||
|           <value> | ||||
|             <list> | ||||
|               <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1/lib" /> | ||||
|             </list> | ||||
|           </value> | ||||
|         </entry> | ||||
|       </option> | ||||
|     </properties> | ||||
|     <CLASSES> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/another_flushbar-1.12.29/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/another_transformer_page_view-2.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.3/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/bubble-1.2.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/convert-3.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/csslib-0.17.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/dio-4.0.6/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_login-4.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.14/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-10.2.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/html-0.15.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/image-3.2.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.17.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/jiffy-5.0.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/nested-1.0.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-5.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/pointycastle-3.6.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/provider-6.0.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-3.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.15/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.14/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_ios-2.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-2.0.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/sign_in_button-3.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/universal_io-2.0.4/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.6/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.21/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.17/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_platform_interface-2.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.13/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.2.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/webdav_client-1.1.8/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+2/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0/lib" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1/lib" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/pkg/sky_engine/lib" /> | ||||
|       <root url="file:///opt/flutter/packages/flutter/lib" /> | ||||
|       <root url="file:///opt/flutter/packages/flutter_test/lib" /> | ||||
|       <root url="file:///opt/flutter/packages/flutter_web_plugins/lib" /> | ||||
|     </CLASSES> | ||||
|     <JAVADOC /> | ||||
|     <SOURCES /> | ||||
|   </library> | ||||
| </component> | ||||
							
								
								
									
										27
									
								
								.idea/libraries/Dart_SDK.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | ||||
| <component name="libraryTable"> | ||||
|   <library name="Dart SDK"> | ||||
|     <CLASSES> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/async" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/cli" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/collection" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/convert" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/core" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/developer" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/ffi" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/html" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/indexed_db" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/io" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/isolate" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js_util" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/math" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/mirrors" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/svg" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/typed_data" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_audio" /> | ||||
|       <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_gl" /> | ||||
|     </CLASSES> | ||||
|     <JAVADOC /> | ||||
|     <SOURCES /> | ||||
|   </library> | ||||
| </component> | ||||
							
								
								
									
										25
									
								
								.idea/libraries/Flutter_Plugins.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,25 @@ | ||||
| <component name="libraryTable"> | ||||
|   <library name="Flutter Plugins" type="FlutterPluginsLibraryType"> | ||||
|     <CLASSES> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.14" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.17" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.21" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.1" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.1" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.1" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.13" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.6" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.14" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.1" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-2.0.4" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.1" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.15" /> | ||||
|       <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_ios-2.1.1" /> | ||||
|     </CLASSES> | ||||
|     <JAVADOC /> | ||||
|     <SOURCES /> | ||||
|   </library> | ||||
| </component> | ||||
							
								
								
									
										15
									
								
								.idea/libraries/KotlinJavaRuntime.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,15 @@ | ||||
| <component name="libraryTable"> | ||||
|   <library name="KotlinJavaRuntime"> | ||||
|     <CLASSES> | ||||
|       <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar!/" /> | ||||
|       <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" /> | ||||
|       <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/" /> | ||||
|     </CLASSES> | ||||
|     <JAVADOC /> | ||||
|     <SOURCES> | ||||
|       <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-sources.jar!/" /> | ||||
|       <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect-sources.jar!/" /> | ||||
|       <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test-sources.jar!/" /> | ||||
|     </SOURCES> | ||||
|   </library> | ||||
| </component> | ||||
							
								
								
									
										6
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="ProjectRootManager"> | ||||
|     <output url="file://$PROJECT_DIR$/out" /> | ||||
|   </component> | ||||
| </project> | ||||
							
								
								
									
										9
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,9 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="ProjectModuleManager"> | ||||
|     <modules> | ||||
|       <module fileurl="file://$PROJECT_DIR$/client.iml" filepath="$PROJECT_DIR$/client.iml" /> | ||||
|       <module fileurl="file://$PROJECT_DIR$/android/client_android.iml" filepath="$PROJECT_DIR$/android/client_android.iml" /> | ||||
|     </modules> | ||||
|   </component> | ||||
| </project> | ||||
							
								
								
									
										6
									
								
								.idea/runConfigurations/main_dart.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| <component name="ProjectRunConfigurationManager"> | ||||
|   <configuration default="false" name="main.dart" type="FlutterRunConfigurationType" factoryName="Flutter"> | ||||
|     <option name="filePath" value="$PROJECT_DIR$/lib/main.dart" /> | ||||
|     <method /> | ||||
|   </configuration> | ||||
| </component> | ||||
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="VcsDirectoryMappings"> | ||||
|     <mapping directory="" vcs="Git" /> | ||||
|   </component> | ||||
| </project> | ||||
							
								
								
									
										45
									
								
								.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,45 @@ | ||||
| # This file tracks properties of this Flutter project. | ||||
| # Used by Flutter tool to assess capabilities and perform upgrades etc. | ||||
| # | ||||
| # This file should be version controlled. | ||||
|  | ||||
| version: | ||||
|   revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|   channel: stable | ||||
|  | ||||
| project_type: app | ||||
|  | ||||
| # Tracks metadata for the flutter migrate command | ||||
| migration: | ||||
|   platforms: | ||||
|     - platform: root | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|     - platform: android | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|     - platform: ios | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|     - platform: linux | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|     - platform: macos | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|     - platform: web | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|     - platform: windows | ||||
|       create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|       base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57 | ||||
|  | ||||
|   # User provided section | ||||
|  | ||||
|   # List of Local paths (relative to this file) that should be | ||||
|   # ignored by the migrate tool. | ||||
|   # | ||||
|   # Files that are not part of the templates will be ignored by default. | ||||
|   unmanaged_files: | ||||
|     - 'lib/main.dart' | ||||
|     - 'ios/Runner.xcodeproj/project.pbxproj' | ||||
							
								
								
									
										48
									
								
								API.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,48 @@ | ||||
| [ | ||||
|   { | ||||
|  | ||||
|     "authenticate": { | ||||
|       "incoming": { | ||||
|  | ||||
|       }, | ||||
|  | ||||
|       "outgoing": { | ||||
|         "username": "Username", | ||||
|         "password": "Password" | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     "serverInfo": { | ||||
|       "incoming": { | ||||
|         "name": "Server name", | ||||
|         "owner": "Server owner", | ||||
|         "version": "Server version", | ||||
|         "legal": "Any legal advice or caution" | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|  | ||||
|     "talkContacts": { | ||||
|       "incoming": [ | ||||
|         { | ||||
|           "name": "Full display name", | ||||
|           "last_message": "Preview of last message", | ||||
|           "last_time": "Time of last message as Text", | ||||
|           "profile_picture": "Avatar Image as URL", | ||||
|           "unread_message": "Chat has unread messages" | ||||
|         } | ||||
|       ], | ||||
|  | ||||
|       "outgoing": { | ||||
|  | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     "talkNotifications": { | ||||
|       "incoming": { | ||||
|         "amount": "Amount of notifications" | ||||
|       } | ||||
|     } | ||||
|  | ||||
|   } | ||||
| ] | ||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @@ -1,3 +1,9 @@ | ||||
| # Client | ||||
| # Client         { | ||||
|             "name": "Full display name", | ||||
|             "last_message": "Preview of last message", | ||||
|             "last_time": "Time of last message as Text", | ||||
|             "profile_picture": "Avatar Image as URL", | ||||
|             "unread_message": "Chat has unread messages" | ||||
|           } | ||||
|  | ||||
| Mobile client for Webuntis and Nextcloud with Talk integration | ||||
| Mobile client for Webuntis and Nextcloud with Talk integration | ||||
|   | ||||
							
								
								
									
										29
									
								
								analysis_options.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,29 @@ | ||||
| # This file configures the analyzer, which statically analyzes Dart code to | ||||
| # check for errors, warnings, and lints. | ||||
| # | ||||
| # The issues identified by the analyzer are surfaced in the UI of Dart-enabled | ||||
| # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be | ||||
| # invoked from the command line by running `flutter analyze`. | ||||
|  | ||||
| # The following line activates a set of recommended lints for Flutter apps, | ||||
| # packages, and plugins designed to encourage good coding practices. | ||||
| include: package:flutter_lints/flutter.yaml | ||||
|  | ||||
| linter: | ||||
|   # The lint rules applied to this project can be customized in the | ||||
|   # section below to disable rules from the `package:flutter_lints/flutter.yaml` | ||||
|   # included above or to enable additional rules. A list of all available lints | ||||
|   # and their documentation is published at | ||||
|   # https://dart-lang.github.io/linter/lints/index.html. | ||||
|   # | ||||
|   # Instead of disabling a lint rule for the entire project in the | ||||
|   # section below, it can also be suppressed for a single line of code | ||||
|   # or a specific dart file by using the `// ignore: name_of_lint` and | ||||
|   # `// ignore_for_file: name_of_lint` syntax on the line or in the file | ||||
|   # producing the lint. | ||||
|   rules: | ||||
|     # avoid_print: false  # Uncomment to disable the `avoid_print` rule | ||||
|     # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule | ||||
|  | ||||
| # Additional information about this file can be found at | ||||
| # https://dart.dev/guides/language/analysis-options | ||||
							
								
								
									
										13
									
								
								android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | ||||
| gradle-wrapper.jar | ||||
| /.gradle | ||||
| /captures/ | ||||
| /gradlew | ||||
| /gradlew.bat | ||||
| /local.properties | ||||
| GeneratedPluginRegistrant.java | ||||
|  | ||||
| # Remember to never publicly share your keystore. | ||||
| # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app | ||||
| key.properties | ||||
| **/*.keystore | ||||
| **/*.jks | ||||
							
								
								
									
										59
									
								
								android/app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,59 @@ | ||||
| def localProperties = new Properties() | ||||
| def localPropertiesFile = rootProject.file('local.properties') | ||||
| if (localPropertiesFile.exists()) { | ||||
|     localPropertiesFile.withReader('UTF-8') { reader -> | ||||
|         localProperties.load(reader) | ||||
|     } | ||||
| } | ||||
|  | ||||
| def flutterRoot = localProperties.getProperty('flutter.sdk') | ||||
| if (flutterRoot == null) { | ||||
|     throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") | ||||
| } | ||||
|  | ||||
| def flutterVersionCode = localProperties.getProperty('flutter.versionCode') | ||||
| if (flutterVersionCode == null) { | ||||
|     flutterVersionCode = '1' | ||||
| } | ||||
|  | ||||
| def flutterVersionName = localProperties.getProperty('flutter.versionName') | ||||
| if (flutterVersionName == null) { | ||||
|     flutterVersionName = '1.0' | ||||
| } | ||||
|  | ||||
| apply plugin: 'com.android.application' | ||||
| apply plugin: 'kotlin-android' | ||||
| apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" | ||||
|  | ||||
| android { | ||||
|     compileSdkVersion flutter.compileSdkVersion | ||||
|     ndkVersion flutter.ndkVersion | ||||
|  | ||||
|     compileOptions { | ||||
|         sourceCompatibility JavaVersion.VERSION_1_8 | ||||
|         targetCompatibility JavaVersion.VERSION_1_8 | ||||
|     } | ||||
|  | ||||
|     defaultConfig { | ||||
|         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). | ||||
|         applicationId "eu.mhsl.marianum.mobile.client" | ||||
|         // You can update the following values to match your application needs. | ||||
|         // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. | ||||
|         minSdkVersion flutter.minSdkVersion | ||||
|         targetSdkVersion flutter.targetSdkVersion | ||||
|         versionCode flutterVersionCode.toInteger() | ||||
|         versionName flutterVersionName | ||||
|     } | ||||
|  | ||||
|     buildTypes { | ||||
|         release { | ||||
|             // TODO: Add your own signing config for the release build. | ||||
|             // Signing with the debug keys for now, so `flutter run --release` works. | ||||
|             signingConfig signingConfigs.debug | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| flutter { | ||||
|     source '../..' | ||||
| } | ||||
							
								
								
									
										8
									
								
								android/app/src/debug/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     package="eu.mhsl.marianum.mobile.client"> | ||||
|     <!-- The INTERNET permission is required for development. Specifically, | ||||
|          the Flutter tool needs it to communicate with the running application | ||||
|          to allow setting breakpoints, to provide hot reload, etc. | ||||
|     --> | ||||
|     <uses-permission android:name="android.permission.INTERNET"/> | ||||
| </manifest> | ||||
							
								
								
									
										34
									
								
								android/app/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,34 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     package="eu.mhsl.marianum.mobile.client"> | ||||
|    <application | ||||
|         android:label="client" | ||||
|         android:name="${applicationName}" | ||||
|         android:icon="@mipmap/ic_launcher"> | ||||
|         <activity | ||||
|             android:name=".MainActivity" | ||||
|             android:exported="true" | ||||
|             android:launchMode="singleTop" | ||||
|             android:theme="@style/LaunchTheme" | ||||
|             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" | ||||
|             android:hardwareAccelerated="true" | ||||
|             android:windowSoftInputMode="adjustResize"> | ||||
|             <!-- Specifies an Android theme to apply to this Activity as soon as | ||||
|                  the Android process has started. This theme is visible to the user | ||||
|                  while the Flutter UI initializes. After that, this theme continues | ||||
|                  to determine the Window background behind the Flutter UI. --> | ||||
|             <meta-data | ||||
|               android:name="io.flutter.embedding.android.NormalTheme" | ||||
|               android:resource="@style/NormalTheme" | ||||
|               /> | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.intent.action.MAIN"/> | ||||
|                 <category android:name="android.intent.category.LAUNCHER"/> | ||||
|             </intent-filter> | ||||
|         </activity> | ||||
|         <!-- Don't delete the meta-data below. | ||||
|              This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> | ||||
|         <meta-data | ||||
|             android:name="flutterEmbedding" | ||||
|             android:value="2" /> | ||||
|     </application> | ||||
| </manifest> | ||||
| @@ -0,0 +1,6 @@ | ||||
| package eu.mhsl.marianum.mobile.client; | ||||
|  | ||||
| import io.flutter.embedding.android.FlutterActivity; | ||||
|  | ||||
| public class MainActivity extends FlutterActivity { | ||||
| } | ||||
							
								
								
									
										12
									
								
								android/app/src/main/res/drawable-v21/launch_background.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Modify this file to customize your launch splash screen --> | ||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item android:drawable="?android:colorBackground" /> | ||||
|  | ||||
|     <!-- You can insert your own image assets here --> | ||||
|     <!-- <item> | ||||
|         <bitmap | ||||
|             android:gravity="center" | ||||
|             android:src="@mipmap/launch_image" /> | ||||
|     </item> --> | ||||
| </layer-list> | ||||
							
								
								
									
										12
									
								
								android/app/src/main/res/drawable/launch_background.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Modify this file to customize your launch splash screen --> | ||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item android:drawable="@android:color/white" /> | ||||
|  | ||||
|     <!-- You can insert your own image assets here --> | ||||
|     <!-- <item> | ||||
|         <bitmap | ||||
|             android:gravity="center" | ||||
|             android:src="@mipmap/launch_image" /> | ||||
|     </item> --> | ||||
| </layer-list> | ||||
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-hdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 544 B | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-mdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 442 B | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 721 B | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										18
									
								
								android/app/src/main/res/values-night/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,18 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> | ||||
|     <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> | ||||
|         <!-- Show a splash screen on the activity. Automatically removed when | ||||
|              the Flutter engine draws its first frame --> | ||||
|         <item name="android:windowBackground">@drawable/launch_background</item> | ||||
|     </style> | ||||
|     <!-- Theme applied to the Android Window as soon as the process has started. | ||||
|          This theme determines the color of the Android Window while your | ||||
|          Flutter UI initializes, as well as behind your Flutter UI while its | ||||
|          running. | ||||
|  | ||||
|          This Theme is only used starting with V2 of Flutter's Android embedding. --> | ||||
|     <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> | ||||
|         <item name="android:windowBackground">?android:colorBackground</item> | ||||
|     </style> | ||||
| </resources> | ||||
							
								
								
									
										18
									
								
								android/app/src/main/res/values/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,18 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> | ||||
|     <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> | ||||
|         <!-- Show a splash screen on the activity. Automatically removed when | ||||
|              the Flutter engine draws its first frame --> | ||||
|         <item name="android:windowBackground">@drawable/launch_background</item> | ||||
|     </style> | ||||
|     <!-- Theme applied to the Android Window as soon as the process has started. | ||||
|          This theme determines the color of the Android Window while your | ||||
|          Flutter UI initializes, as well as behind your Flutter UI while its | ||||
|          running. | ||||
|  | ||||
|          This Theme is only used starting with V2 of Flutter's Android embedding. --> | ||||
|     <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> | ||||
|         <item name="android:windowBackground">?android:colorBackground</item> | ||||
|     </style> | ||||
| </resources> | ||||
							
								
								
									
										8
									
								
								android/app/src/profile/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     package="eu.mhsl.marianum.mobile.client"> | ||||
|     <!-- The INTERNET permission is required for development. Specifically, | ||||
|          the Flutter tool needs it to communicate with the running application | ||||
|          to allow setting breakpoints, to provide hot reload, etc. | ||||
|     --> | ||||
|     <uses-permission android:name="android.permission.INTERNET"/> | ||||
| </manifest> | ||||
							
								
								
									
										31
									
								
								android/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,31 @@ | ||||
| buildscript { | ||||
|     ext.kotlin_version = '1.6.10' | ||||
|     repositories { | ||||
|         google() | ||||
|         mavenCentral() | ||||
|     } | ||||
|  | ||||
|     dependencies { | ||||
|         classpath 'com.android.tools.build:gradle:7.1.2' | ||||
|         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | ||||
|     } | ||||
| } | ||||
|  | ||||
| allprojects { | ||||
|     repositories { | ||||
|         google() | ||||
|         mavenCentral() | ||||
|     } | ||||
| } | ||||
|  | ||||
| rootProject.buildDir = '../build' | ||||
| subprojects { | ||||
|     project.buildDir = "${rootProject.buildDir}/${project.name}" | ||||
| } | ||||
| subprojects { | ||||
|     project.evaluationDependsOn(':app') | ||||
| } | ||||
|  | ||||
| task clean(type: Delete) { | ||||
|     delete rootProject.buildDir | ||||
| } | ||||
							
								
								
									
										27
									
								
								android/client_android.iml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <module type="JAVA_MODULE" version="4"> | ||||
|   <component name="FacetManager"> | ||||
|     <facet type="android" name="Android"> | ||||
|       <configuration> | ||||
|         <option name="ALLOW_USER_CONFIGURATION" value="false" /> | ||||
|         <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/gen" /> | ||||
|         <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/gen" /> | ||||
|         <option name="MANIFEST_FILE_RELATIVE_PATH" value="/app/src/main/AndroidManifest.xml" /> | ||||
|         <option name="RES_FOLDER_RELATIVE_PATH" value="/app/src/main/res" /> | ||||
|         <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/app/src/main/assets" /> | ||||
|         <option name="LIBS_FOLDER_RELATIVE_PATH" value="/app/src/main/libs" /> | ||||
|         <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/app/src/main/proguard_logs" /> | ||||
|       </configuration> | ||||
|     </facet> | ||||
|   </component> | ||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> | ||||
|     <exclude-output /> | ||||
|     <content url="file://$MODULE_DIR$"> | ||||
|       <sourceFolder url="file://$MODULE_DIR$/app/src/main/java" isTestSource="false" /> | ||||
|       <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" /> | ||||
|     </content> | ||||
|     <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" /> | ||||
|     <orderEntry type="sourceFolder" forTests="false" /> | ||||
|     <orderEntry type="library" name="Flutter for Android" level="project" /> | ||||
|   </component> | ||||
| </module> | ||||
							
								
								
									
										3
									
								
								android/gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| org.gradle.jvmargs=-Xmx1536M | ||||
| android.useAndroidX=true | ||||
| android.enableJetifier=true | ||||
							
								
								
									
										5
									
								
								android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
| zipStorePath=wrapper/dists | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip | ||||
							
								
								
									
										11
									
								
								android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,11 @@ | ||||
| include ':app' | ||||
|  | ||||
| def localPropertiesFile = new File(rootProject.projectDir, "local.properties") | ||||
| def properties = new Properties() | ||||
|  | ||||
| assert localPropertiesFile.exists() | ||||
| localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } | ||||
|  | ||||
| def flutterSdkPath = properties.getProperty("flutter.sdk") | ||||
| assert flutterSdkPath != null, "flutter.sdk not set in local.properties" | ||||
| apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" | ||||
							
								
								
									
										30
									
								
								assets/ca/lets-encrypt-r3.pem
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,30 @@ | ||||
| -----BEGIN CERTIFICATE----- | ||||
| MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw | ||||
| TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh | ||||
| cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw | ||||
| WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg | ||||
| RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK | ||||
| AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP | ||||
| R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx | ||||
| sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm | ||||
| NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg | ||||
| Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG | ||||
| /kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC | ||||
| AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB | ||||
| Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA | ||||
| FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw | ||||
| AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw | ||||
| Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB | ||||
| gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W | ||||
| PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl | ||||
| ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz | ||||
| CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm | ||||
| lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 | ||||
| avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 | ||||
| yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O | ||||
| yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids | ||||
| hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ | ||||
| HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv | ||||
| MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX | ||||
| nLRbwHOoq7hHwg== | ||||
| -----END CERTIFICATE----- | ||||
							
								
								
									
										
											BIN
										
									
								
								assets/logo/icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 28 KiB | 
							
								
								
									
										51
									
								
								client.iml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,51 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <module type="JAVA_MODULE" version="4"> | ||||
|   <component name="NewModuleRootManager" inherit-compiler-output="true"> | ||||
|     <exclude-output /> | ||||
|     <content url="file://$MODULE_DIR$"> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/example/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/example/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/example/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/example/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/example/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/example/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/example/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/example/.pub" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/example/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/example/build" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/example/.dart_tool" /> | ||||
|       <excludeFolder url="file://$MODULE_DIR$/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/example/.pub" /> | ||||
|     </content> | ||||
|     <orderEntry type="sourceFolder" forTests="false" /> | ||||
|     <orderEntry type="library" name="Dart SDK" level="project" /> | ||||
|     <orderEntry type="library" name="Dart Packages" level="project" /> | ||||
|     <orderEntry type="library" name="Flutter Plugins" level="project" /> | ||||
|   </component> | ||||
| </module> | ||||
							
								
								
									
										34
									
								
								ios/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,34 @@ | ||||
| **/dgph | ||||
| *.mode1v3 | ||||
| *.mode2v3 | ||||
| *.moved-aside | ||||
| *.pbxuser | ||||
| *.perspectivev3 | ||||
| **/*sync/ | ||||
| .sconsign.dblite | ||||
| .tags* | ||||
| **/.vagrant/ | ||||
| **/DerivedData/ | ||||
| Icon? | ||||
| **/Pods/ | ||||
| **/.symlinks/ | ||||
| profile | ||||
| xcuserdata | ||||
| **/.generated/ | ||||
| Flutter/App.framework | ||||
| Flutter/Flutter.framework | ||||
| Flutter/Flutter.podspec | ||||
| Flutter/Generated.xcconfig | ||||
| Flutter/ephemeral/ | ||||
| Flutter/app.flx | ||||
| Flutter/app.zip | ||||
| Flutter/flutter_assets/ | ||||
| Flutter/flutter_export_environment.sh | ||||
| ServiceDefinitions.json | ||||
| Runner/GeneratedPluginRegistrant.* | ||||
|  | ||||
| # Exceptions to above rules. | ||||
| !default.mode1v3 | ||||
| !default.mode2v3 | ||||
| !default.pbxuser | ||||
| !default.perspectivev3 | ||||
							
								
								
									
										26
									
								
								ios/Flutter/AppFrameworkInfo.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
|   <key>CFBundleDevelopmentRegion</key> | ||||
|   <string>en</string> | ||||
|   <key>CFBundleExecutable</key> | ||||
|   <string>App</string> | ||||
|   <key>CFBundleIdentifier</key> | ||||
|   <string>io.flutter.flutter.app</string> | ||||
|   <key>CFBundleInfoDictionaryVersion</key> | ||||
|   <string>6.0</string> | ||||
|   <key>CFBundleName</key> | ||||
|   <string>App</string> | ||||
|   <key>CFBundlePackageType</key> | ||||
|   <string>FMWK</string> | ||||
|   <key>CFBundleShortVersionString</key> | ||||
|   <string>1.0</string> | ||||
|   <key>CFBundleSignature</key> | ||||
|   <string>????</string> | ||||
|   <key>CFBundleVersion</key> | ||||
|   <string>1.0</string> | ||||
|   <key>MinimumOSVersion</key> | ||||
|   <string>11.0</string> | ||||
| </dict> | ||||
| </plist> | ||||
							
								
								
									
										1
									
								
								ios/Flutter/Debug.xcconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| #include "Generated.xcconfig" | ||||
							
								
								
									
										1
									
								
								ios/Flutter/Release.xcconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| #include "Generated.xcconfig" | ||||
							
								
								
									
										481
									
								
								ios/Runner.xcodeproj/project.pbxproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,481 @@ | ||||
| // !$*UTF8*$! | ||||
| { | ||||
| 	archiveVersion = 1; | ||||
| 	classes = { | ||||
| 	}; | ||||
| 	objectVersion = 50; | ||||
| 	objects = { | ||||
|  | ||||
| /* Begin PBXBuildFile section */ | ||||
| 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | ||||
| 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; | ||||
| 		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; | ||||
| 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; | ||||
| 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; | ||||
| 		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; | ||||
| /* End PBXBuildFile section */ | ||||
|  | ||||
| /* Begin PBXCopyFilesBuildPhase section */ | ||||
| 		9705A1C41CF9048500538489 /* Embed Frameworks */ = { | ||||
| 			isa = PBXCopyFilesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			dstPath = ""; | ||||
| 			dstSubfolderSpec = 10; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			name = "Embed Frameworks"; | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| /* End PBXCopyFilesBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXFileReference section */ | ||||
| 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; | ||||
| 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; | ||||
| 		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; | ||||
| 		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; | ||||
| 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||||
| 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; | ||||
| 		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; | ||||
| 		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; | ||||
| 		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; | ||||
| 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | ||||
| 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||||
| 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||||
| /* End PBXFileReference section */ | ||||
|  | ||||
| /* Begin PBXFrameworksBuildPhase section */ | ||||
| 		97C146EB1CF9000F007C117D /* Frameworks */ = { | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| /* End PBXFrameworksBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXGroup section */ | ||||
| 		9740EEB11CF90186004384FC /* Flutter */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, | ||||
| 				9740EEB21CF90195004384FC /* Debug.xcconfig */, | ||||
| 				7AFA3C8E1D35360C0083082E /* Release.xcconfig */, | ||||
| 				9740EEB31CF90195004384FC /* Generated.xcconfig */, | ||||
| 			); | ||||
| 			name = Flutter; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		97C146E51CF9000F007C117D = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				9740EEB11CF90186004384FC /* Flutter */, | ||||
| 				97C146F01CF9000F007C117D /* Runner */, | ||||
| 				97C146EF1CF9000F007C117D /* Products */, | ||||
| 			); | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		97C146EF1CF9000F007C117D /* Products */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				97C146EE1CF9000F007C117D /* Runner.app */, | ||||
| 			); | ||||
| 			name = Products; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		97C146F01CF9000F007C117D /* Runner */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				97C146FA1CF9000F007C117D /* Main.storyboard */, | ||||
| 				97C146FD1CF9000F007C117D /* Assets.xcassets */, | ||||
| 				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, | ||||
| 				97C147021CF9000F007C117D /* Info.plist */, | ||||
| 				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, | ||||
| 				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, | ||||
| 				74858FAE1ED2DC5600515810 /* AppDelegate.swift */, | ||||
| 				74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, | ||||
| 			); | ||||
| 			path = Runner; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| /* End PBXGroup section */ | ||||
|  | ||||
| /* Begin PBXNativeTarget section */ | ||||
| 		97C146ED1CF9000F007C117D /* Runner */ = { | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; | ||||
| 			buildPhases = ( | ||||
| 				9740EEB61CF901F6004384FC /* Run Script */, | ||||
| 				97C146EA1CF9000F007C117D /* Sources */, | ||||
| 				97C146EB1CF9000F007C117D /* Frameworks */, | ||||
| 				97C146EC1CF9000F007C117D /* Resources */, | ||||
| 				9705A1C41CF9048500538489 /* Embed Frameworks */, | ||||
| 				3B06AD1E1E4923F5004D2608 /* Thin Binary */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| 			dependencies = ( | ||||
| 			); | ||||
| 			name = Runner; | ||||
| 			productName = Runner; | ||||
| 			productReference = 97C146EE1CF9000F007C117D /* Runner.app */; | ||||
| 			productType = "com.apple.product-type.application"; | ||||
| 		}; | ||||
| /* End PBXNativeTarget section */ | ||||
|  | ||||
| /* Begin PBXProject section */ | ||||
| 		97C146E61CF9000F007C117D /* Project object */ = { | ||||
| 			isa = PBXProject; | ||||
| 			attributes = { | ||||
| 				LastUpgradeCheck = 1300; | ||||
| 				ORGANIZATIONNAME = ""; | ||||
| 				TargetAttributes = { | ||||
| 					97C146ED1CF9000F007C117D = { | ||||
| 						CreatedOnToolsVersion = 7.3.1; | ||||
| 						LastSwiftMigration = 1100; | ||||
| 					}; | ||||
| 				}; | ||||
| 			}; | ||||
| 			buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; | ||||
| 			compatibilityVersion = "Xcode 9.3"; | ||||
| 			developmentRegion = en; | ||||
| 			hasScannedForEncodings = 0; | ||||
| 			knownRegions = ( | ||||
| 				en, | ||||
| 				Base, | ||||
| 			); | ||||
| 			mainGroup = 97C146E51CF9000F007C117D; | ||||
| 			productRefGroup = 97C146EF1CF9000F007C117D /* Products */; | ||||
| 			projectDirPath = ""; | ||||
| 			projectRoot = ""; | ||||
| 			targets = ( | ||||
| 				97C146ED1CF9000F007C117D /* Runner */, | ||||
| 			); | ||||
| 		}; | ||||
| /* End PBXProject section */ | ||||
|  | ||||
| /* Begin PBXResourcesBuildPhase section */ | ||||
| 		97C146EC1CF9000F007C117D /* Resources */ = { | ||||
| 			isa = PBXResourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, | ||||
| 				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, | ||||
| 				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, | ||||
| 				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| /* End PBXResourcesBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXShellScriptBuildPhase section */ | ||||
| 		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 			); | ||||
| 			name = "Thin Binary"; | ||||
| 			outputPaths = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; | ||||
| 		}; | ||||
| 		9740EEB61CF901F6004384FC /* Run Script */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 			); | ||||
| 			name = "Run Script"; | ||||
| 			outputPaths = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; | ||||
| 		}; | ||||
| /* End PBXShellScriptBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXSourcesBuildPhase section */ | ||||
| 		97C146EA1CF9000F007C117D /* Sources */ = { | ||||
| 			isa = PBXSourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, | ||||
| 				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| /* End PBXSourcesBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXVariantGroup section */ | ||||
| 		97C146FA1CF9000F007C117D /* Main.storyboard */ = { | ||||
| 			isa = PBXVariantGroup; | ||||
| 			children = ( | ||||
| 				97C146FB1CF9000F007C117D /* Base */, | ||||
| 			); | ||||
| 			name = Main.storyboard; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { | ||||
| 			isa = PBXVariantGroup; | ||||
| 			children = ( | ||||
| 				97C147001CF9000F007C117D /* Base */, | ||||
| 			); | ||||
| 			name = LaunchScreen.storyboard; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| /* End PBXVariantGroup section */ | ||||
|  | ||||
| /* Begin XCBuildConfiguration section */ | ||||
| 		249021D3217E4FDB00AE95B9 /* Profile */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | ||||
| 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||||
| 				CLANG_WARN_BOOL_CONVERSION = YES; | ||||
| 				CLANG_WARN_COMMA = YES; | ||||
| 				CLANG_WARN_CONSTANT_CONVERSION = YES; | ||||
| 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||||
| 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||||
| 				CLANG_WARN_EMPTY_BODY = YES; | ||||
| 				CLANG_WARN_ENUM_CONVERSION = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_INT_CONVERSION = YES; | ||||
| 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				CLANG_WARN_UNREACHABLE_CODE = YES; | ||||
| 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||||
| 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||||
| 				ENABLE_NS_ASSERTIONS = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||||
| 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||||
| 				GCC_WARN_UNDECLARED_SELECTOR = YES; | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				SUPPORTED_PLATFORMS = iphoneos; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| 				VALIDATE_PRODUCT = YES; | ||||
| 			}; | ||||
| 			name = Profile; | ||||
| 		}; | ||||
| 		249021D4217E4FDB00AE95B9 /* Profile */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = eu.mhsl.marianum.mobile.client; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 			}; | ||||
| 			name = Profile; | ||||
| 		}; | ||||
| 		97C147031CF9000F007C117D /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | ||||
| 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||||
| 				CLANG_WARN_BOOL_CONVERSION = YES; | ||||
| 				CLANG_WARN_COMMA = YES; | ||||
| 				CLANG_WARN_CONSTANT_CONVERSION = YES; | ||||
| 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||||
| 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||||
| 				CLANG_WARN_EMPTY_BODY = YES; | ||||
| 				CLANG_WARN_ENUM_CONVERSION = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_INT_CONVERSION = YES; | ||||
| 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				CLANG_WARN_UNREACHABLE_CODE = YES; | ||||
| 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||||
| 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				DEBUG_INFORMATION_FORMAT = dwarf; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				ENABLE_TESTABILITY = YES; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_DYNAMIC_NO_PIC = NO; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				GCC_OPTIMIZATION_LEVEL = 0; | ||||
| 				GCC_PREPROCESSOR_DEFINITIONS = ( | ||||
| 					"DEBUG=1", | ||||
| 					"$(inherited)", | ||||
| 				); | ||||
| 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||||
| 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||||
| 				GCC_WARN_UNDECLARED_SELECTOR = YES; | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = YES; | ||||
| 				ONLY_ACTIVE_ARCH = YES; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| 		97C147041CF9000F007C117D /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | ||||
| 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||||
| 				CLANG_WARN_BOOL_CONVERSION = YES; | ||||
| 				CLANG_WARN_COMMA = YES; | ||||
| 				CLANG_WARN_CONSTANT_CONVERSION = YES; | ||||
| 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||||
| 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||||
| 				CLANG_WARN_EMPTY_BODY = YES; | ||||
| 				CLANG_WARN_ENUM_CONVERSION = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_INT_CONVERSION = YES; | ||||
| 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				CLANG_WARN_UNREACHABLE_CODE = YES; | ||||
| 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||||
| 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||||
| 				ENABLE_NS_ASSERTIONS = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||||
| 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||||
| 				GCC_WARN_UNDECLARED_SELECTOR = YES; | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				SUPPORTED_PLATFORMS = iphoneos; | ||||
| 				SWIFT_COMPILATION_MODE = wholemodule; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-O"; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| 				VALIDATE_PRODUCT = YES; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| 		97C147061CF9000F007C117D /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = eu.mhsl.marianum.mobile.client; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| 		97C147071CF9000F007C117D /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = eu.mhsl.marianum.mobile.client; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| /* End XCBuildConfiguration section */ | ||||
|  | ||||
| /* Begin XCConfigurationList section */ | ||||
| 		97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				97C147031CF9000F007C117D /* Debug */, | ||||
| 				97C147041CF9000F007C117D /* Release */, | ||||
| 				249021D3217E4FDB00AE95B9 /* Profile */, | ||||
| 			); | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				97C147061CF9000F007C117D /* Debug */, | ||||
| 				97C147071CF9000F007C117D /* Release */, | ||||
| 				249021D4217E4FDB00AE95B9 /* Profile */, | ||||
| 			); | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| /* End XCConfigurationList section */ | ||||
| 	}; | ||||
| 	rootObject = 97C146E61CF9000F007C117D /* Project object */; | ||||
| } | ||||
							
								
								
									
										7
									
								
								ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Workspace | ||||
|    version = "1.0"> | ||||
|    <FileRef | ||||
|       location = "self:"> | ||||
|    </FileRef> | ||||
| </Workspace> | ||||
| @@ -0,0 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>IDEDidComputeMac32BitWarning</key> | ||||
| 	<true/> | ||||
| </dict> | ||||
| </plist> | ||||
| @@ -0,0 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>PreviewsEnabled</key> | ||||
| 	<false/> | ||||
| </dict> | ||||
| </plist> | ||||
							
								
								
									
										87
									
								
								ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,87 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Scheme | ||||
|    LastUpgradeVersion = "1300" | ||||
|    version = "1.3"> | ||||
|    <BuildAction | ||||
|       parallelizeBuildables = "YES" | ||||
|       buildImplicitDependencies = "YES"> | ||||
|       <BuildActionEntries> | ||||
|          <BuildActionEntry | ||||
|             buildForTesting = "YES" | ||||
|             buildForRunning = "YES" | ||||
|             buildForProfiling = "YES" | ||||
|             buildForArchiving = "YES" | ||||
|             buildForAnalyzing = "YES"> | ||||
|             <BuildableReference | ||||
|                BuildableIdentifier = "primary" | ||||
|                BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||||
|                BuildableName = "Runner.app" | ||||
|                BlueprintName = "Runner" | ||||
|                ReferencedContainer = "container:Runner.xcodeproj"> | ||||
|             </BuildableReference> | ||||
|          </BuildActionEntry> | ||||
|       </BuildActionEntries> | ||||
|    </BuildAction> | ||||
|    <TestAction | ||||
|       buildConfiguration = "Debug" | ||||
|       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||||
|       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||||
|       shouldUseLaunchSchemeArgsEnv = "YES"> | ||||
|       <MacroExpansion> | ||||
|          <BuildableReference | ||||
|             BuildableIdentifier = "primary" | ||||
|             BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||||
|             BuildableName = "Runner.app" | ||||
|             BlueprintName = "Runner" | ||||
|             ReferencedContainer = "container:Runner.xcodeproj"> | ||||
|          </BuildableReference> | ||||
|       </MacroExpansion> | ||||
|       <Testables> | ||||
|       </Testables> | ||||
|    </TestAction> | ||||
|    <LaunchAction | ||||
|       buildConfiguration = "Debug" | ||||
|       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||||
|       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||||
|       launchStyle = "0" | ||||
|       useCustomWorkingDirectory = "NO" | ||||
|       ignoresPersistentStateOnLaunch = "NO" | ||||
|       debugDocumentVersioning = "YES" | ||||
|       debugServiceExtension = "internal" | ||||
|       allowLocationSimulation = "YES"> | ||||
|       <BuildableProductRunnable | ||||
|          runnableDebuggingMode = "0"> | ||||
|          <BuildableReference | ||||
|             BuildableIdentifier = "primary" | ||||
|             BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||||
|             BuildableName = "Runner.app" | ||||
|             BlueprintName = "Runner" | ||||
|             ReferencedContainer = "container:Runner.xcodeproj"> | ||||
|          </BuildableReference> | ||||
|       </BuildableProductRunnable> | ||||
|    </LaunchAction> | ||||
|    <ProfileAction | ||||
|       buildConfiguration = "Profile" | ||||
|       shouldUseLaunchSchemeArgsEnv = "YES" | ||||
|       savedToolIdentifier = "" | ||||
|       useCustomWorkingDirectory = "NO" | ||||
|       debugDocumentVersioning = "YES"> | ||||
|       <BuildableProductRunnable | ||||
|          runnableDebuggingMode = "0"> | ||||
|          <BuildableReference | ||||
|             BuildableIdentifier = "primary" | ||||
|             BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||||
|             BuildableName = "Runner.app" | ||||
|             BlueprintName = "Runner" | ||||
|             ReferencedContainer = "container:Runner.xcodeproj"> | ||||
|          </BuildableReference> | ||||
|       </BuildableProductRunnable> | ||||
|    </ProfileAction> | ||||
|    <AnalyzeAction | ||||
|       buildConfiguration = "Debug"> | ||||
|    </AnalyzeAction> | ||||
|    <ArchiveAction | ||||
|       buildConfiguration = "Release" | ||||
|       revealArchiveInOrganizer = "YES"> | ||||
|    </ArchiveAction> | ||||
| </Scheme> | ||||
							
								
								
									
										7
									
								
								ios/Runner.xcworkspace/contents.xcworkspacedata
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Workspace | ||||
|    version = "1.0"> | ||||
|    <FileRef | ||||
|       location = "group:Runner.xcodeproj"> | ||||
|    </FileRef> | ||||
| </Workspace> | ||||
| @@ -0,0 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>IDEDidComputeMac32BitWarning</key> | ||||
| 	<true/> | ||||
| </dict> | ||||
| </plist> | ||||
| @@ -0,0 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>PreviewsEnabled</key> | ||||
| 	<false/> | ||||
| </dict> | ||||
| </plist> | ||||
							
								
								
									
										13
									
								
								ios/Runner/AppDelegate.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | ||||
| import UIKit | ||||
| import Flutter | ||||
|  | ||||
| @UIApplicationMain | ||||
| @objc class AppDelegate: FlutterAppDelegate { | ||||
|   override func application( | ||||
|     _ application: UIApplication, | ||||
|     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | ||||
|   ) -> Bool { | ||||
|     GeneratedPluginRegistrant.register(with: self) | ||||
|     return super.application(application, didFinishLaunchingWithOptions: launchOptions) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										122
									
								
								ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,122 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-20x20@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-20x20@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-29x29@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-29x29@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-29x29@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-40x40@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-40x40@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "60x60", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-60x60@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "60x60", | ||||
|       "idiom" : "iphone", | ||||
|       "filename" : "Icon-App-60x60@3x.png", | ||||
|       "scale" : "3x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-20x20@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "20x20", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-20x20@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-29x29@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "29x29", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-29x29@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-40x40@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "40x40", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-40x40@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "76x76", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-76x76@1x.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "76x76", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-76x76@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "83.5x83.5", | ||||
|       "idiom" : "ipad", | ||||
|       "filename" : "Icon-App-83.5x83.5@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "size" : "1024x1024", | ||||
|       "idiom" : "ios-marketing", | ||||
|       "filename" : "Icon-App-1024x1024@1x.png", | ||||
|       "scale" : "1x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "version" : 1, | ||||
|     "author" : "xcode" | ||||
|   } | ||||
| } | ||||
| After Width: | Height: | Size: 11 KiB | 
| After Width: | Height: | Size: 564 B | 
| After Width: | Height: | Size: 1.3 KiB | 
| After Width: | Height: | Size: 1.6 KiB | 
| After Width: | Height: | Size: 1.0 KiB | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 1.3 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 2.6 KiB | 
| After Width: | Height: | Size: 2.6 KiB | 
| After Width: | Height: | Size: 3.7 KiB | 
| After Width: | Height: | Size: 1.8 KiB | 
| After Width: | Height: | Size: 3.2 KiB | 
| After Width: | Height: | Size: 3.5 KiB | 
							
								
								
									
										23
									
								
								ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "filename" : "LaunchImage.png", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "filename" : "LaunchImage@2x.png", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "filename" : "LaunchImage@3x.png", | ||||
|       "scale" : "3x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "version" : 1, | ||||
|     "author" : "xcode" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 68 B | 
							
								
								
									
										
											BIN
										
									
								
								ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 68 B | 
							
								
								
									
										
											BIN
										
									
								
								ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 68 B | 
							
								
								
									
										5
									
								
								ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | ||||
| # Launch Screen Assets | ||||
|  | ||||
| You can customize the launch screen with your own desired assets by replacing the image files in this directory. | ||||
|  | ||||
| You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. | ||||
							
								
								
									
										37
									
								
								ios/Runner/Base.lproj/LaunchScreen.storyboard
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,37 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> | ||||
|     <dependencies> | ||||
|         <deployment identifier="iOS"/> | ||||
|         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/> | ||||
|     </dependencies> | ||||
|     <scenes> | ||||
|         <!--View Controller--> | ||||
|         <scene sceneID="EHf-IW-A2E"> | ||||
|             <objects> | ||||
|                 <viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||||
|                     <layoutGuides> | ||||
|                         <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/> | ||||
|                         <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/> | ||||
|                     </layoutGuides> | ||||
|                     <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||||
|                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||||
|                         <subviews> | ||||
|                             <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"> | ||||
|                             </imageView> | ||||
|                         </subviews> | ||||
|                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||||
|                         <constraints> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/> | ||||
|                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/> | ||||
|                         </constraints> | ||||
|                     </view> | ||||
|                 </viewController> | ||||
|                 <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||||
|             </objects> | ||||
|             <point key="canvasLocation" x="53" y="375"/> | ||||
|         </scene> | ||||
|     </scenes> | ||||
|     <resources> | ||||
|         <image name="LaunchImage" width="168" height="185"/> | ||||
|     </resources> | ||||
| </document> | ||||
							
								
								
									
										26
									
								
								ios/Runner/Base.lproj/Main.storyboard
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r"> | ||||
|     <dependencies> | ||||
|         <deployment identifier="iOS"/> | ||||
|         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/> | ||||
|     </dependencies> | ||||
|     <scenes> | ||||
|         <!--Flutter View Controller--> | ||||
|         <scene sceneID="tne-QT-ifu"> | ||||
|             <objects> | ||||
|                 <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController"> | ||||
|                     <layoutGuides> | ||||
|                         <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/> | ||||
|                         <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/> | ||||
|                     </layoutGuides> | ||||
|                     <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> | ||||
|                         <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> | ||||
|                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||||
|                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||||
|                     </view> | ||||
|                 </viewController> | ||||
|                 <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> | ||||
|             </objects> | ||||
|         </scene> | ||||
|     </scenes> | ||||
| </document> | ||||
							
								
								
									
										51
									
								
								ios/Runner/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,51 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>CFBundleDevelopmentRegion</key> | ||||
| 	<string>$(DEVELOPMENT_LANGUAGE)</string> | ||||
| 	<key>CFBundleDisplayName</key> | ||||
| 	<string>Client</string> | ||||
| 	<key>CFBundleExecutable</key> | ||||
| 	<string>$(EXECUTABLE_NAME)</string> | ||||
| 	<key>CFBundleIdentifier</key> | ||||
| 	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||||
| 	<key>CFBundleInfoDictionaryVersion</key> | ||||
| 	<string>6.0</string> | ||||
| 	<key>CFBundleName</key> | ||||
| 	<string>client</string> | ||||
| 	<key>CFBundlePackageType</key> | ||||
| 	<string>APPL</string> | ||||
| 	<key>CFBundleShortVersionString</key> | ||||
| 	<string>$(FLUTTER_BUILD_NAME)</string> | ||||
| 	<key>CFBundleSignature</key> | ||||
| 	<string>????</string> | ||||
| 	<key>CFBundleVersion</key> | ||||
| 	<string>$(FLUTTER_BUILD_NUMBER)</string> | ||||
| 	<key>LSRequiresIPhoneOS</key> | ||||
| 	<true/> | ||||
| 	<key>UILaunchStoryboardName</key> | ||||
| 	<string>LaunchScreen</string> | ||||
| 	<key>UIMainStoryboardFile</key> | ||||
| 	<string>Main</string> | ||||
| 	<key>UISupportedInterfaceOrientations</key> | ||||
| 	<array> | ||||
| 		<string>UIInterfaceOrientationPortrait</string> | ||||
| 		<string>UIInterfaceOrientationLandscapeLeft</string> | ||||
| 		<string>UIInterfaceOrientationLandscapeRight</string> | ||||
| 	</array> | ||||
| 	<key>UISupportedInterfaceOrientations~ipad</key> | ||||
| 	<array> | ||||
| 		<string>UIInterfaceOrientationPortrait</string> | ||||
| 		<string>UIInterfaceOrientationPortraitUpsideDown</string> | ||||
| 		<string>UIInterfaceOrientationLandscapeLeft</string> | ||||
| 		<string>UIInterfaceOrientationLandscapeRight</string> | ||||
| 	</array> | ||||
| 	<key>UIViewControllerBasedStatusBarAppearance</key> | ||||
| 	<false/> | ||||
| 	<key>CADisableMinimumFrameDurationOnPhone</key> | ||||
| 	<true/> | ||||
| 	<key>UIApplicationSupportsIndirectInputEvents</key> | ||||
| 	<true/> | ||||
| </dict> | ||||
| </plist> | ||||
							
								
								
									
										1
									
								
								ios/Runner/Runner-Bridging-Header.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| #import "GeneratedPluginRegistrant.h" | ||||
							
								
								
									
										111
									
								
								lib/app.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,111 @@ | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/talkNotificationsPacket.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
|  | ||||
| import 'data/accountModel.dart'; | ||||
| import 'screen/pages/files/files.dart'; | ||||
| import 'screen/pages/more/overhang.dart'; | ||||
| import 'screen/pages/talk/chatOverview.dart'; | ||||
| import 'screen/pages/timetable/timetable.dart'; | ||||
| import 'screen/settings/settings.dart'; | ||||
|  | ||||
| class App extends StatefulWidget { | ||||
|   const App({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<App> createState() => _AppState(); | ||||
| } | ||||
|  | ||||
| class _AppState extends State<App> { | ||||
|   int currentPage = 0; | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     final PageController pageController = PageController(); | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: const Text("Marianum Fulda"), | ||||
|         actions: <Widget>[ | ||||
|           IconButton( | ||||
|             padding: const EdgeInsets.only(right: 15), | ||||
|             icon: const Icon(Icons.settings), | ||||
|             onPressed: () { | ||||
|               Navigator.push(context, MaterialPageRoute(builder: (context) => const Settings())); | ||||
|             }, | ||||
|           ) | ||||
|         ], | ||||
|       ), | ||||
|       body: PageView( | ||||
|         controller: pageController, | ||||
|         children: const [ | ||||
|           Timetable(), | ||||
|           Talk(), | ||||
|           Files(), | ||||
|           Overhang(), | ||||
|         ], | ||||
|         onPageChanged: (page) { | ||||
|           setState(() { | ||||
|             currentPage = page; | ||||
|           }); | ||||
|         }, | ||||
|       ), | ||||
|  | ||||
|       bottomNavigationBar: BottomNavigationBar( | ||||
|         items: [ | ||||
|           const BottomNavigationBarItem(icon: Icon(Icons.calendar_month), label: "Vertretung"), | ||||
|           BottomNavigationBarItem(icon: Stack( | ||||
|             children: [ | ||||
|               const Icon(Icons.chat), | ||||
|  | ||||
|               Consumer<TalkNotificationsPacket>( | ||||
|                 builder: (context, data, child) { | ||||
|                   return Visibility( | ||||
|                     visible: data.amount != 0, | ||||
|                     child: Positioned( | ||||
|                       right: 0, | ||||
|                       child: Container( | ||||
|                         padding: const EdgeInsets.all(1), | ||||
|                         decoration: BoxDecoration( | ||||
|                           color: Colors.red, | ||||
|                           borderRadius: BorderRadius.circular(6), | ||||
|                         ), | ||||
|                         constraints: const BoxConstraints( | ||||
|                           minWidth: 12, | ||||
|                           minHeight: 12, | ||||
|                         ), | ||||
|                         child: Text( | ||||
|                           "${data.amount}", | ||||
|                           style: const TextStyle( | ||||
|                             color: Colors.black, | ||||
|                             fontSize: 10, | ||||
|                           ), | ||||
|                           textAlign: TextAlign.center, | ||||
|                         ), | ||||
|                       ), | ||||
|                     ), | ||||
|                   ); | ||||
|                 }, | ||||
|               ) | ||||
|             ], | ||||
|           ), label: "Talk"), | ||||
|           const BottomNavigationBarItem(icon: Icon(Icons.folder), label: "Dateien"), | ||||
|           const BottomNavigationBarItem(icon: Icon(Icons.list), label: "Mehr"), | ||||
|         ], | ||||
|         selectedItemColor: Theme.of(context).primaryColor, | ||||
|         unselectedItemColor: Colors.grey, | ||||
|         showUnselectedLabels: true, | ||||
|         showSelectedLabels: true, | ||||
|  | ||||
|         currentIndex: currentPage, | ||||
|         onTap: (item) { | ||||
|           setState(() { | ||||
|             currentPage = item; | ||||
|             pageController.jumpToPage(item); | ||||
|           }); | ||||
|         }, | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										19
									
								
								lib/data/accountModel.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,19 @@ | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
| import 'package:web_socket_channel/web_socket_channel.dart'; | ||||
|  | ||||
| class AccountModel extends ChangeNotifier { | ||||
|   bool _isLoggedIn = false; | ||||
|  | ||||
|   bool get isLoggedIn => _isLoggedIn; | ||||
|  | ||||
|   void logout() { | ||||
|     _isLoggedIn = false; | ||||
|     notifyListeners(); | ||||
|   } | ||||
|  | ||||
|   void login() { | ||||
|     _isLoggedIn = true; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										43
									
								
								lib/data/incomingPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,43 @@ | ||||
| import 'dart:async'; | ||||
| import 'dart:convert'; | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:marianum_mobile/data/socketConnection.dart'; | ||||
|  | ||||
| class IncomingPacket extends ChangeNotifier { | ||||
|  | ||||
|   String packetId; | ||||
|  | ||||
|   bool _isReceived = false; | ||||
|   bool get isReceived => _isReceived; | ||||
|    | ||||
|   IncomingPacket(this.packetId) { | ||||
|     log("PACKETLISTENER ERSTELLT!"); | ||||
|     SocketConnection.read.listen((event) { | ||||
|       if(event.startsWith("$packetId:")) { | ||||
|         _isReceived = true; | ||||
|  | ||||
|         // THIS listener handles the incomming request | ||||
|         log("$packetId is handled!"); | ||||
|         handle(jsonDecode(event.split("$packetId:")[1])); | ||||
|       } | ||||
|       notifyListeners(); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   void invoke({Object? data, bool indicateLoading = false, bool allowNotifyListeners = true}) { | ||||
|     data = data ?? {}; | ||||
|     log("$packetId is invoked with data: $data"); | ||||
|     SocketConnection.write.add("$packetId:${jsonEncode(data)}"); | ||||
|  | ||||
|     if(indicateLoading) { | ||||
|       _isReceived = false; | ||||
|       if(allowNotifyListeners) notifyListeners(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   void handle(dynamic data) { | ||||
|     log("Warning: $packetId packet listener is registered, but no handle is defined!"); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										19
									
								
								lib/data/incommingPackets/authenticatePacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,19 @@ | ||||
|  | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:marianum_mobile/data/incomingPacket.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
|  | ||||
| class AuthenticatePacket extends IncomingPacket { | ||||
|   AuthenticatePacket() : super("authenticate"); | ||||
|  | ||||
|   @override | ||||
|   void handle(data) { | ||||
|     SharedPreferences.getInstance().then((value) => { | ||||
|       invoke(data: { | ||||
|         'username': value.getString("username"), | ||||
|         'password': value.getString("password") | ||||
|       }) | ||||
|     }); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										29
									
								
								lib/data/incommingPackets/fileListPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,29 @@ | ||||
|  | ||||
| import 'package:marianum_mobile/data/incomingPacket.dart'; | ||||
|  | ||||
| class FileEntry { | ||||
|   String name; | ||||
|   bool isFolder; | ||||
|   String path; | ||||
|  | ||||
|   FileEntry(this.name, this.isFolder, this.path); | ||||
| } | ||||
|  | ||||
| class FileListPacket extends IncomingPacket { | ||||
|   FileListPacket() : super("fileList"); | ||||
|  | ||||
|   List<FileEntry> _entries = List<FileEntry>.empty(growable: true); | ||||
|   List<FileEntry> get entries => _entries; | ||||
|  | ||||
|   String _lastPath = "/"; | ||||
|   String get lastPath => _lastPath; | ||||
|  | ||||
|   @override | ||||
|   void handle(data) { | ||||
|     _entries = List<FileEntry>.empty(growable: true); | ||||
|     _lastPath = data['backLink']; | ||||
|     data['files'].forEach((value) => { | ||||
|       _entries.add(FileEntry(value['name'], value['is_folder'], value['path'])) | ||||
|     }); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										28
									
								
								lib/data/incommingPackets/serverInfoPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | ||||
| import 'dart:convert'; | ||||
|  | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:marianum_mobile/data/socketConnection.dart'; | ||||
|  | ||||
| import '../incomingPacket.dart'; | ||||
|  | ||||
| class ServerInfoPacket extends IncomingPacket { | ||||
|   ServerInfoPacket() : super('serverInfo'); | ||||
|  | ||||
|   String _serverName = "Unbekannt"; | ||||
|   String _serverOwner = "Unbekannt"; | ||||
|   String _serverVersion = "?"; | ||||
|   String _legal = "Keine"; | ||||
|  | ||||
|   String get serverName => _serverName; | ||||
|   String get serverOwner => _serverOwner; | ||||
|   String get serverVersion => _serverVersion; | ||||
|   String get legal => _legal; | ||||
|  | ||||
|   @override | ||||
|   void handle(data) { | ||||
|     _serverName = data['name']; | ||||
|     _serverOwner = data['owner']; | ||||
|     _serverVersion = data['version']; | ||||
|     _legal = data['legal']; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										26
									
								
								lib/data/incommingPackets/talkChatPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | ||||
| import 'package:marianum_mobile/data/incomingPacket.dart'; | ||||
|  | ||||
| class TalkMessage { | ||||
|   bool self; | ||||
|   String sender; | ||||
|   String content; | ||||
|   String date; | ||||
|  | ||||
|   TalkMessage(this.self, this.sender, this.content, this.date); | ||||
| } | ||||
|  | ||||
| class TalkChatPacket extends IncomingPacket { | ||||
|   TalkChatPacket() : super("talkChat"); | ||||
|  | ||||
|   List<TalkMessage> _messages = List<TalkMessage>.empty(growable: true); | ||||
|   List<TalkMessage> get messages => _messages; | ||||
|  | ||||
|   @override | ||||
|   void handle(data) { | ||||
|     _messages = List<TalkMessage>.empty(growable: true); | ||||
|     print(data); | ||||
|     data.forEach((message) => { | ||||
|       _messages.add(TalkMessage(true, message['actorId'], message['message'], message['timestamp'])) | ||||
|     }); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										46
									
								
								lib/data/incommingPackets/talkContactsPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,46 @@ | ||||
| import 'dart:convert'; | ||||
|  | ||||
| import 'package:intl/intl.dart'; | ||||
| import 'package:jiffy/jiffy.dart'; | ||||
| import 'package:marianum_mobile/data/incomingPacket.dart'; | ||||
|  | ||||
| class TalkContact { | ||||
|   String name; | ||||
|   String lastMessage; | ||||
|   String lastTime; | ||||
|   String profilePicture; | ||||
|   bool unreadMessages; | ||||
|   bool isGroup; | ||||
|   String userToken; | ||||
|  | ||||
|   TalkContact(this.name, this.lastMessage, this.lastTime, this.profilePicture, this.unreadMessages, this.isGroup, this.userToken); | ||||
| } | ||||
|  | ||||
| class TalkContactsPaket extends IncomingPacket { | ||||
|   TalkContactsPaket() : super('talkContacts'); | ||||
|  | ||||
|   List<TalkContact> _contacts = List<TalkContact>.empty(growable: true); | ||||
|  | ||||
|   List<TalkContact> get contacts => _contacts; | ||||
|  | ||||
|   @override | ||||
|   void handle(data) { | ||||
|     _contacts = List<TalkContact>.empty(growable: true); | ||||
|     //data["ocs"]["data"].sort((a, b) => a['lastActivity'].compareTo(b['lastActivity'])); | ||||
|  | ||||
|     data.forEach((value) async { | ||||
|       await Jiffy.locale("de"); | ||||
|       _contacts.add( | ||||
|           TalkContact( | ||||
|               value['displayName'], | ||||
|               value['lastMessage']['message'], | ||||
|               Jiffy(DateTime.fromMillisecondsSinceEpoch(value['lastActivity'] * 1000)).fromNow(), | ||||
|               value['name'] != null ? "https://cloud.marianum-fulda.de/avatar/${value['name']}/128" : "", | ||||
|               value['unreadMessages'] > 0, | ||||
|               value['type'] != 1, | ||||
|               value['token'] | ||||
|           ) | ||||
|       ); | ||||
|     }); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										13
									
								
								lib/data/incommingPackets/talkNotificationsPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | ||||
| import 'package:marianum_mobile/data/incomingPacket.dart'; | ||||
|  | ||||
| class TalkNotificationsPacket extends IncomingPacket { | ||||
|   TalkNotificationsPacket() : super("talkNotifications"); | ||||
|  | ||||
|   int _amount = 0; | ||||
|   int get amount => _amount; | ||||
|  | ||||
|   @override | ||||
|   void handle(data) { | ||||
|     _amount = data['amount']; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										14
									
								
								lib/data/outgoingPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,14 @@ | ||||
| import 'dart:convert'; | ||||
|  | ||||
| import 'package:marianum_mobile/data/socketConnection.dart'; | ||||
|  | ||||
| class OutgoingPacket { | ||||
|   final String command; | ||||
|   final dynamic data; | ||||
|  | ||||
|   OutgoingPacket({required this.command, required this.data}); | ||||
|  | ||||
|   void send() { | ||||
|     SocketConnection.write.add("$command:${jsonEncode(data)}"); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										8
									
								
								lib/data/outgoingPackets/talkContactsAskPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| import 'package:marianum_mobile/data/outgoingPacket.dart'; | ||||
|  | ||||
| class TalkContactsAskPacket extends OutgoingPacket { | ||||
|   TalkContactsAskPacket() : super( | ||||
|     command: "talkContacts", | ||||
|     data: {}, | ||||
|   ); | ||||
| } | ||||
							
								
								
									
										10
									
								
								lib/data/socketConnection.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,10 @@ | ||||
| import 'package:web_socket_channel/web_socket_channel.dart'; | ||||
|  | ||||
| class SocketConnection { | ||||
|   static final _connection = WebSocketChannel.connect( | ||||
|     Uri.parse('ws://localhost:1234'), | ||||
|   ); | ||||
|  | ||||
|   static var read = _connection.stream.asBroadcastStream(); | ||||
|   static var write = _connection.sink; | ||||
| } | ||||
							
								
								
									
										109
									
								
								lib/main.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,109 @@ | ||||
| import 'dart:io'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:flutter/services.dart'; | ||||
| import 'package:marianum_mobile/data/accountModel.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/authenticatePacket.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/fileListPacket.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/talkChatPacket.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/talkNotificationsPacket.dart'; | ||||
| import 'package:marianum_mobile/screen/login/login.dart'; | ||||
| import 'package:marianum_mobile/screen/pages/timetable/timetable.dart'; | ||||
| import 'package:marianum_mobile/widget/loadingSpinner.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
| import 'package:web_socket_channel/web_socket_channel.dart'; | ||||
|  | ||||
| import 'app.dart'; | ||||
| import 'data/incommingPackets/serverInfoPacket.dart'; | ||||
| import 'data/incommingPackets/talkContactsPacket.dart'; | ||||
|  | ||||
| Future<void> main() async { | ||||
|   WidgetsFlutterBinding.ensureInitialized(); | ||||
|  | ||||
|   ByteData data = await PlatformAssetBundle().load('assets/ca/lets-encrypt-r3.pem'); | ||||
|   SecurityContext.defaultContext.setTrustedCertificatesBytes(data.buffer.asUint8List()); | ||||
|  | ||||
|   AuthenticatePacket(); | ||||
|  | ||||
|   runApp( | ||||
|       MultiProvider( | ||||
|         providers: [ | ||||
|           ChangeNotifierProvider(create: (context) => AccountModel()), | ||||
|           ChangeNotifierProvider(create: (context) => ServerInfoPacket()), | ||||
|           ChangeNotifierProvider(create: (context) => TalkContactsPaket()), | ||||
|           ChangeNotifierProvider(create: (context) => TalkNotificationsPacket()), | ||||
|           ChangeNotifierProvider(create: (context) => FileListPacket()), | ||||
|           ChangeNotifierProvider(create: (context) => TalkChatPacket()), | ||||
|         ], | ||||
|         child: const Main(), | ||||
|       ) | ||||
|   ); | ||||
| } | ||||
|  | ||||
| class Main extends StatefulWidget { | ||||
|   const Main({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Main> createState() => _MainState(); | ||||
| } | ||||
|  | ||||
| class _MainState extends State<Main> { | ||||
|   static const Color red = Color.fromARGB(255, 153, 51, 51); | ||||
|  | ||||
|   final Future<SharedPreferences> _storage = SharedPreferences.getInstance(); | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     _storage.then((SharedPreferences preferences) => preferences.getBool("loggedIn") ?? false).then((value) => { | ||||
|       if(value) { | ||||
|         Provider.of<AccountModel>(context, listen: false).login() | ||||
|       } else { | ||||
|         Provider.of<AccountModel>(context, listen: false).logout() | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return MaterialApp( | ||||
|       debugShowCheckedModeBanner: false, | ||||
|  | ||||
|       title: 'Marianum Fulda', | ||||
|       theme: ThemeData( | ||||
|         brightness: Brightness.light, | ||||
|         primaryColor: red, | ||||
|         appBarTheme: const AppBarTheme( | ||||
|           backgroundColor: red, | ||||
|         ), | ||||
|         progressIndicatorTheme: const ProgressIndicatorThemeData( | ||||
|           color: red, | ||||
|         ), | ||||
|       ), | ||||
|  | ||||
|       home: FutureBuilder<SharedPreferences>( | ||||
|         future: _storage, | ||||
|         builder: (BuildContext context, AsyncSnapshot<SharedPreferences> snapshot) { | ||||
|  | ||||
|           if(snapshot.hasData) { | ||||
|  | ||||
|             return Consumer<AccountModel>( | ||||
|               builder: (context, value, child) { | ||||
|                 return value.isLoggedIn ? const App() : const Login(); | ||||
|               }, | ||||
|             ); | ||||
|  | ||||
|           } else { | ||||
|  | ||||
|             return const LoadingSpinner(); | ||||
|  | ||||
|           } | ||||
|  | ||||
|         }, | ||||
|       ) | ||||
|  | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										93
									
								
								lib/screen/login/login.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,93 @@ | ||||
| import 'dart:io'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_login/flutter_login.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
|  | ||||
| import '../../data/accountModel.dart'; | ||||
|  | ||||
| class Login extends StatefulWidget { | ||||
|   const Login({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Login> createState() => _LoginState(); | ||||
| } | ||||
|  | ||||
| class _LoginState extends State<Login> { | ||||
|   Duration get loginTime => const Duration(milliseconds: 2250); | ||||
|  | ||||
|   final Future<SharedPreferences> _storage = SharedPreferences.getInstance(); | ||||
|  | ||||
|   String? checkInput(value){ | ||||
|     return (value ?? "").length < 5 ? "Eingabe zu kurz" : null; | ||||
|   } | ||||
|  | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return FlutterLogin( | ||||
|       logo: Image.file(File("assets/logo/icon.png")).image, | ||||
|  | ||||
|       userValidator: checkInput, | ||||
|       passwordValidator: checkInput, | ||||
|  | ||||
|       onLogin: _authUser, | ||||
|       onSignup: null, | ||||
|       onRecoverPassword: _recoverPassword, | ||||
|  | ||||
|       theme: LoginTheme( | ||||
|         primaryColor: Theme.of(context).primaryColor, | ||||
|         cardTheme: const CardTheme( | ||||
|           elevation: 10, | ||||
|           shape: InputBorder.none, | ||||
|         ), | ||||
|       ), | ||||
|  | ||||
|       messages: LoginMessages( | ||||
|         loginButton: "Anmelden", | ||||
|         userHint: "Nutzername", | ||||
|         passwordHint: "Passwort", | ||||
|       ), | ||||
|  | ||||
|       disableCustomPageTransformer: true, | ||||
|  | ||||
|       headerWidget: const Padding( | ||||
|         padding: EdgeInsets.only(bottom: 10), | ||||
|         child: Center( | ||||
|           child: Text( | ||||
|             "Dies ist ein Inoffizieller Nextclient & Webuntis Client und wird nicht vom Marianum selbst betrieben.\nBitte bedenke, dass deine persönlichen Anmelde & Infodaten durch dritte, nicht vom Marianum betriebene, Systeme geleitet werden!", | ||||
|             textAlign: TextAlign.center, | ||||
|           ), | ||||
|         ), | ||||
|       ), | ||||
|  | ||||
|       footer: "Marianum Fulda - Die persönliche Schule!", | ||||
|       title: "Marianum", | ||||
|  | ||||
|       hideForgotPasswordButton: true, | ||||
|       userType: LoginUserType.name, | ||||
|  | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   Future<String?> _authUser(LoginData data) async { | ||||
|     final SharedPreferences preferences = await _storage; | ||||
|     preferences.setBool("loggedIn", true); | ||||
|     preferences.setString("username", data.name); | ||||
|     preferences.setString("password", data.password); | ||||
|  | ||||
|     debugPrint('Name: ${data.name}, Password: ${data.password}'); | ||||
|     return Future.delayed(loginTime).then((_) { | ||||
|       Provider.of<AccountModel>(context, listen: false).login(); | ||||
|       return null; | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   Future<String> _recoverPassword(String name) { | ||||
|     return Future.delayed(loginTime).then((_) { | ||||
|       return "Diese Funktion steht nicht zur Verfügung!"; | ||||
|     }); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										271
									
								
								lib/screen/pages/files/files.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,271 @@ | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/fileListPacket.dart'; | ||||
| import 'package:marianum_mobile/widget/loadingPacket.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import 'package:webdav_client/webdav_client.dart'; | ||||
|  | ||||
| import '../../../data/accountModel.dart'; | ||||
| import '../../../widget/loadingSpinner.dart'; | ||||
|  | ||||
| class Files extends StatefulWidget { | ||||
|   const Files({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Files> createState() => _FilesState(); | ||||
| } | ||||
|  | ||||
| class _FilesState extends State<Files> { | ||||
|   // List<String> path = List<String>.empty(growable: true); | ||||
|   // List<File> files = List<File>.empty(growable: true); | ||||
|   // | ||||
|   // var client = newClient( | ||||
|   //   "https://cloud.marianum-fulda.de/remote.php/dav/files/***REMOVED***/", | ||||
|   //   user: "***REMOVED***", | ||||
|   //   password: "***REMOVED***", | ||||
|   // ); | ||||
|  | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     Provider.of<FileListPacket>(context, listen: false).invoke(); | ||||
|     super.initState(); | ||||
|  | ||||
|     // client.setHeaders( | ||||
|     //     { | ||||
|     //       "Authorization": "Bearer", | ||||
|     //       "User-Agent": "Marianum Fulda/Alpha0.1 (Development build) ; https://mhsl.eu/id.html", | ||||
|     //     } | ||||
|     // ); | ||||
|     // | ||||
|     // path.add("/"); | ||||
|     // Future.delayed(Duration.zero).then((context) => updatePath()); | ||||
|   } | ||||
|  | ||||
|   // void homeFolder() { | ||||
|   //   path.clear(); | ||||
|   //   path.add("/"); | ||||
|   //   updatePath(); | ||||
|   // } | ||||
|   // | ||||
|   // void popFolder() { | ||||
|   //   if(path.length == 1) return; | ||||
|   //   path.removeLast(); | ||||
|   //   updatePath(); | ||||
|   // } | ||||
|   // | ||||
|   // void enterFolder(String sub) { | ||||
|   //   path.add(sub); | ||||
|   //   updatePath(); | ||||
|   // } | ||||
|   // | ||||
|   // void updatePath() { | ||||
|   // | ||||
|   //   final files = client.readDir(path.join("/")); | ||||
|   // | ||||
|   //   showDialog( | ||||
|   //       context: context, | ||||
|   //       barrierDismissible: false, | ||||
|   //       builder: (BuildContext context) { | ||||
|   //         return const LoadingSpinner(); | ||||
|   //       } | ||||
|   //   ); | ||||
|   // | ||||
|   //   files.then((value) => | ||||
|   //       setState(() { | ||||
|   //         Navigator.pop(context); | ||||
|   //         this.files.clear(); | ||||
|   //         this.files = value; | ||||
|   //       }) | ||||
|   //   ); | ||||
|   // } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     // List<Widget> items = List<Widget>.empty(growable: true); | ||||
|     // | ||||
|     // var counter = 0; | ||||
|     // for (final file in files) { | ||||
|     //   bool isDir = file.isDir ?? false; | ||||
|     //   String name = file.name ?? "?"; | ||||
|     // | ||||
|     //   items.add(ListTile( | ||||
|     //     title: Text(file.name ?? "?"), | ||||
|     //     leading: Icon(isDir ? Icons.folder_outlined : Icons.file_copy), | ||||
|     //     trailing: Icon(isDir ? Icons.arrow_right : null), | ||||
|     //     onTap: () { | ||||
|     //       enterFolder(file.name ?? ""); | ||||
|     //     }, | ||||
|     //     onLongPress: () { | ||||
|     //       setState(() { | ||||
|     //         items[counter] = ListTile( | ||||
|     //           title: Text(file.name ?? "?"), | ||||
|     //           trailing: const Icon(Icons.delete), | ||||
|     //         ); | ||||
|     //       }); | ||||
|     //     }, | ||||
|     //   )); | ||||
|     // | ||||
|     // } | ||||
|     // | ||||
|     // items.insert(0, AppBar( | ||||
|     //   leading: path.length == 1 ? null : IconButton( | ||||
|     //     icon: const Icon(Icons.keyboard_arrow_left), | ||||
|     //     onPressed: () { | ||||
|     //       popFolder(); | ||||
|     //     }, | ||||
|     //   ), | ||||
|     //   actions: [ | ||||
|     //     IconButton( | ||||
|     //       icon: const Icon(Icons.home), | ||||
|     //       onPressed: () { | ||||
|     //         homeFolder(); | ||||
|     //       }, | ||||
|     //     ), | ||||
|     // | ||||
|     //     IconButton( | ||||
|     //       icon: const Icon(Icons.refresh), | ||||
|     //       onPressed: () { | ||||
|     //         updatePath(); | ||||
|     //       }, | ||||
|     //     ) | ||||
|     //   ], | ||||
|     // | ||||
|     //   title: Text(path.length == 1 ? "Dateien" : path.last), | ||||
|     // )); | ||||
|     // | ||||
|     // return ListView( | ||||
|     //   children: items, | ||||
|     // ); | ||||
|  | ||||
|     return Consumer<FileListPacket>( | ||||
|       builder: (context, data, child) { | ||||
|         List<ListTile> entries = List<ListTile>.empty(growable: true); | ||||
|  | ||||
|         data.entries.forEach((element) { | ||||
|           entries.add(ListTile( | ||||
|             title: Text(element.name), | ||||
|             leading: Icon(element.isFolder ? Icons.folder : Icons.file_copy_outlined), | ||||
|             onTap: () { | ||||
|               if(element.isFolder) { | ||||
|                 Provider.of<FileListPacket>(context, listen: false).invoke( | ||||
|                     data: { | ||||
|                       "path": element.path | ||||
|                     }, | ||||
|                     indicateLoading: true, | ||||
|                 ); | ||||
|               } else { | ||||
|                 // TODO: Open an File | ||||
|               } | ||||
|             }, | ||||
|              | ||||
|             onLongPress: () { | ||||
|               showModalBottomSheet<void>( | ||||
|                 context: context, | ||||
|                 builder: (context) { | ||||
|                   return ListView( | ||||
|                     children: [ | ||||
|                       ListTile( | ||||
|                         leading: Icon(Icons.delete), | ||||
|                         title: Text("'${element.name.replaceRange(20, element.name.length, " ...")}' Löschen"), | ||||
|                       ), | ||||
|                       const ListTile( | ||||
|                         leading: Icon(Icons.share), | ||||
|                         title: Text("Teilen"), | ||||
|                       ) | ||||
|                     ], | ||||
|                   ); | ||||
|                 }, | ||||
|               ); | ||||
|             }, | ||||
|           )); | ||||
|         }); | ||||
|  | ||||
|         return Scaffold( | ||||
|           appBar: AppBar( | ||||
|             leading: IconButton( | ||||
|               icon: const Icon(Icons.arrow_back_outlined), | ||||
|               onPressed: () { | ||||
|                 Provider.of<FileListPacket>(context, listen: false).invoke( | ||||
|                   data: { | ||||
|                     "path": data.lastPath | ||||
|                   }, | ||||
|                   indicateLoading: true, | ||||
|                 ); | ||||
|               } | ||||
|             ), | ||||
|  | ||||
|             title: Text(data.lastPath), | ||||
|             actions: [ | ||||
|               IconButton( | ||||
|                 onPressed: () { | ||||
|                   Provider.of<FileListPacket>(context, listen: false).invoke(indicateLoading: true); | ||||
|                 }, | ||||
|                 icon: const Icon(Icons.home) | ||||
|               ), | ||||
|               PopupMenuButton( | ||||
|                 icon: Icon(Icons.add), | ||||
|                 itemBuilder: (context) { | ||||
|                   return [ | ||||
|                     const PopupMenuItem<int>( | ||||
|                       value: 0, | ||||
|                       child: ListTile( | ||||
|                         leading: Icon(Icons.folder), | ||||
|                         title: Text("Ordner erstellen"), | ||||
|                       ), | ||||
|                     ), | ||||
|                     const PopupMenuItem<int>( | ||||
|                       value: 1, | ||||
|                       child: ListTile( | ||||
|                         leading: Icon(Icons.upload), | ||||
|                         title: Text("Datei Hochladen"), | ||||
|                       ), | ||||
|                     ) | ||||
|                   ]; | ||||
|                 }, | ||||
|               ) | ||||
|             ], | ||||
|           ), | ||||
|  | ||||
|           floatingActionButton: FloatingActionButton.small( | ||||
|             onPressed: () { | ||||
|               showModalBottomSheet( | ||||
|                 isScrollControlled: true, | ||||
|                 context: context, | ||||
|                 backgroundColor: Colors.transparent, | ||||
|                 builder: (context) { | ||||
|                   return Container( | ||||
|                     height: MediaQuery.of(context).size.height * 0.3, | ||||
|                     decoration: const BoxDecoration( | ||||
|                       color: Colors.white, | ||||
|                       borderRadius: BorderRadius.only( | ||||
|                         topLeft: Radius.circular(25.0), | ||||
|                         topRight: Radius.circular(25.0), | ||||
|                       ) | ||||
|                     ), | ||||
|                     child: ListView( | ||||
|                       children: const [ | ||||
|                         ListTile( | ||||
|                           leading: Icon(Icons.create_new_folder_sharp), | ||||
|                           title: Text("Neuer Ordner"), | ||||
|                         ), | ||||
|                         ListTile( | ||||
|                           leading: Icon(Icons.upload), | ||||
|                           title: Text("Hochladen"), | ||||
|                         ) | ||||
|                       ], | ||||
|                     ), | ||||
|                   ); | ||||
|                 }, | ||||
|               ); | ||||
|             }, | ||||
|             backgroundColor: Theme.of(context).primaryColor, | ||||
|             child: const Icon(Icons.add), | ||||
|           ), | ||||
|  | ||||
|           body: LoadingPacket(packet: data, child: ListView(children: entries)), | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										15
									
								
								lib/screen/pages/more/message/message.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,15 @@ | ||||
| import 'package:flutter/cupertino.dart'; | ||||
|  | ||||
| class Message extends StatefulWidget { | ||||
|   const Message({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Message> createState() => _MessageState(); | ||||
| } | ||||
|  | ||||
| class _MessageState extends State<Message> { | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return const Text("Message"); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								lib/screen/pages/more/overhang.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:marianum_mobile/screen/pages/more/roomplan/roomplan.dart'; | ||||
|  | ||||
| import '../../../widget/ListItem.dart'; | ||||
| import 'message/message.dart'; | ||||
|  | ||||
| class Overhang extends StatelessWidget { | ||||
|   const Overhang({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return ListView( | ||||
|       children: const [ | ||||
|         ListItemNavigator(icon: Icons.newspaper, text: "Marianum Message", target: Message()), | ||||
|         ListItemNavigator(icon: Icons.room, text: "Raumplan", target: Roomplan()), | ||||
|       ], | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										10
									
								
								lib/screen/pages/more/roomplan/roomplan.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,10 @@ | ||||
| import 'package:flutter/cupertino.dart'; | ||||
|  | ||||
| class Roomplan extends StatelessWidget { | ||||
|   const Roomplan({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return const Text("asd"); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										166
									
								
								lib/screen/pages/talk/chatOverview.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,166 @@ | ||||
| import 'dart:convert'; | ||||
|  | ||||
| import 'package:flutter/foundation.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:http/http.dart' as http; | ||||
| import 'package:marianum_mobile/data/outgoingPackets/talkContactsAskPacket.dart'; | ||||
| import 'package:marianum_mobile/widget/loadingPacket.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
|  | ||||
| import '../../../data/accountModel.dart'; | ||||
| import '../../../data/incommingPackets/talkContactsPacket.dart'; | ||||
| import '../../../widget/loadingSpinner.dart'; | ||||
| import 'chatView.dart'; | ||||
|  | ||||
| class Talk extends StatefulWidget { | ||||
|   const Talk({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Talk> createState() => _TalkState(); | ||||
| } | ||||
|  | ||||
| class _TalkState extends State<Talk> { | ||||
|   // List<ChatData> chats = List<ChatData>.empty(growable: true); | ||||
|   // | ||||
|   // Future<List<ChatData>> getChats() async { | ||||
|   //   var url = Uri.https("***REMOVED***:***REMOVED***@mhsl.eu", "marianum/app/middleware/chat.php"); | ||||
|   //   var response = await http.get( | ||||
|   //     url, | ||||
|   //     headers: ( | ||||
|   //       { | ||||
|   //         "Accept": "application/json", | ||||
|   //         "OCS-APIRequest": "true", | ||||
|   //       } | ||||
|   //     ), | ||||
|   //   ); | ||||
|   // | ||||
|   //   return compute(parseChats, response.body); | ||||
|   // } | ||||
|  | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     Provider.of<TalkContactsPaket>(context, listen: false).invoke(); | ||||
|     //TalkContactsAskPacket().send(); | ||||
|     super.initState(); | ||||
|     // Future.delayed(Duration.zero).then((context) => updateChats()); | ||||
|     // Provider.of<AccountModel>(context, listen: false).channel.sink.add("chat"); | ||||
|  | ||||
|   } | ||||
|  | ||||
|   void updateChats() { | ||||
|     // var chats = getChats(); | ||||
|     // | ||||
|     // showDialog( | ||||
|     //     context: context, | ||||
|     //     barrierDismissible: false, | ||||
|     //     builder: (BuildContext context) { | ||||
|     //       return const LoadingSpinner(); | ||||
|     //     } | ||||
|     // ); | ||||
|     // | ||||
|     // chats.then((value) => | ||||
|     //     setState(() { | ||||
|     //       Navigator.pop(context); | ||||
|     //       this.chats.clear(); | ||||
|     //       this.chats = value; | ||||
|     //     }) | ||||
|     // ); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     // List<ListTile> chats = List<ListTile>.empty(growable: true); | ||||
|     // | ||||
|     // for (var element in this.chats) { | ||||
|     //   chats.add( | ||||
|     //     ListTile( | ||||
|     //       leading: element.type == 1 ? CircleAvatar( | ||||
|     //         backgroundColor: Colors.grey, | ||||
|     //         foregroundImage: Image.network(element.avatar).image, | ||||
|     //       ) : const Icon(Icons.group), | ||||
|     //       title: Text(element.name), | ||||
|     //       subtitle: Text( | ||||
|     //         "${element.lastMessageAuthor}: ${element.lastMessage.replaceAll("\n", "")}", | ||||
|     //         overflow: TextOverflow.ellipsis, | ||||
|     //       ), | ||||
|     //       onTap: () { | ||||
|     //         Navigator.push(context, MaterialPageRoute(builder: (builder) => const ChatView())); | ||||
|     //       }, | ||||
|     //       trailing: element.unreadMessages > 0 ? const Icon(Icons.mark_chat_unread) : Text(element.lastActivity), | ||||
|     //     ) | ||||
|     //   ); | ||||
|     // } | ||||
|     // | ||||
|     // return ListView( | ||||
|     //   children: chats, | ||||
|     // ); | ||||
|  | ||||
|     return Consumer<TalkContactsPaket>( | ||||
|       builder: (context, data, child) { | ||||
|         List<ListTile> chats = List<ListTile>.empty(growable: true); | ||||
|  | ||||
|         for (var element in data.contacts) { | ||||
|           chats.add(ListTile( | ||||
|             title: Text(element.name), | ||||
|             subtitle: Text("${element.lastTime}: ${element.lastMessage}".replaceAll("\n", " "), overflow: TextOverflow.ellipsis), | ||||
|             trailing: element.unreadMessages ? const Icon(Icons.new_releases_outlined) : null, | ||||
|             leading: CircleAvatar( | ||||
|               foregroundImage: element.isGroup ? null : Image.network(element.profilePicture).image, | ||||
|               backgroundColor: Theme.of(context).primaryColor, | ||||
|               foregroundColor: Colors.white, | ||||
|               child: element.isGroup ? const Icon(Icons.group) : const Icon(Icons.person), | ||||
|             ), | ||||
|             onTap: () { | ||||
|               Navigator.of(context).push(MaterialPageRoute(builder: (context) { | ||||
|                 return ChatView( | ||||
|                   userToken: element.userToken, | ||||
|                 ); | ||||
|               })); | ||||
|             }, | ||||
|           )); | ||||
|         } | ||||
|  | ||||
|         return LoadingPacket(packet: data, child: ListView(children: chats)); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
| // | ||||
| // List<ChatData> parseChats(String json) { | ||||
| //   final parsed = jsonDecode(json).cast<Map<String, dynamic>>(); | ||||
| //   return parsed.map<ChatData>((a) => ChatData.fromJson(a)).toList(); | ||||
| // } | ||||
| // | ||||
| // class ChatData { | ||||
| //   final String name; | ||||
| //   final String lastMessage; | ||||
| //   final String lastMessageAuthor; | ||||
| //   final String avatar; | ||||
| //   final int type; | ||||
| //   final String lastActivity; | ||||
| //   final int unreadMessages; | ||||
| // | ||||
| //   const ChatData({ | ||||
| //     required this.name, | ||||
| //     required this.lastMessage, | ||||
| //     required this.lastMessageAuthor, | ||||
| //     required this.avatar, | ||||
| //     required this.type, | ||||
| //     required this.lastActivity, | ||||
| //     required this.unreadMessages, | ||||
| //   }); | ||||
| // | ||||
| //   factory ChatData.fromJson(Map<String, dynamic> json) { | ||||
| //     return ChatData( | ||||
| //       name: json['name'] as String, | ||||
| //       lastMessage: json['last_message'] as String, | ||||
| //       lastMessageAuthor: json['last_message_author'] as String, | ||||
| //       avatar: json['avatar'] as String, | ||||
| //       type: json['type'] as int, | ||||
| //       lastActivity: json['lastActivity'] as String, | ||||
| //       unreadMessages: json['unreadMessages'] as int, | ||||
| //     ); | ||||
| //   } | ||||
| // } | ||||
							
								
								
									
										101
									
								
								lib/screen/pages/talk/chatView.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,101 @@ | ||||
|  | ||||
| import 'package:bubble/bubble.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:marianum_mobile/data/incommingPackets/talkChatPacket.dart'; | ||||
| import 'package:marianum_mobile/widget/loadingPacket.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
|  | ||||
| class ChatView extends StatefulWidget { | ||||
|   final String userToken; | ||||
|   const ChatView({Key? key, required this.userToken}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<ChatView> createState() => _ChatViewState(); | ||||
| } | ||||
|  | ||||
| class _ChatViewState extends State<ChatView> { | ||||
|   static const styleSystem = BubbleStyle( | ||||
|     color: Color.fromRGBO(212, 234, 244, 1.0), | ||||
|     borderWidth: 1, | ||||
|     elevation: 2, | ||||
|     margin: BubbleEdges.only(top: 15), | ||||
|     alignment: Alignment.center, | ||||
|   ); | ||||
|  | ||||
|   static const styleOther = BubbleStyle( | ||||
|     nip: BubbleNip.leftBottom, | ||||
|     color: Colors.white, | ||||
|     borderWidth: 1, | ||||
|     elevation: 2, | ||||
|     margin: BubbleEdges.only(top: 15, left: 10), | ||||
|     alignment: Alignment.topLeft, | ||||
|   ); | ||||
|  | ||||
|   static const styleSelf = BubbleStyle( | ||||
|     nip: BubbleNip.rightBottom, | ||||
|     color: Color.fromRGBO(225, 255, 199, 1.0), | ||||
|     borderWidth: 1, | ||||
|     elevation: 2, | ||||
|     margin: BubbleEdges.only(top: 15, right: 10), | ||||
|     alignment: Alignment.topRight, | ||||
|   ); | ||||
|  | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|  | ||||
|     Provider.of<TalkChatPacket>(context, listen: false).invoke( | ||||
|       data: { | ||||
|         "token": widget.userToken | ||||
|       }, | ||||
|       indicateLoading: true, | ||||
|       allowNotifyListeners: false, | ||||
|     ); | ||||
|   } | ||||
|    | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       backgroundColor: Colors.grey, | ||||
|       appBar: AppBar( | ||||
|         title: const Text("Chat mit jemandem"), | ||||
|       ), | ||||
|       body: Consumer<TalkChatPacket>( | ||||
|         builder: (context, data, child) { | ||||
|           List<Bubble> messages = List<Bubble>.empty(growable: true); | ||||
|  | ||||
|           data.messages.forEach((element) { | ||||
|             messages.add(Bubble( | ||||
|               style: styleSelf, | ||||
|               child: Text(element.content), | ||||
|             )); | ||||
|           }); | ||||
|  | ||||
|           return LoadingPacket(packet: data, child: ListView( | ||||
|             children: [], | ||||
|           )); | ||||
|         }, | ||||
|       ), | ||||
|  | ||||
|  | ||||
|  | ||||
|       // ListView( | ||||
|       //   children: [ | ||||
|       //     Bubble( | ||||
|       //       style: styleSystem, | ||||
|       //       child: const Text("Chat gestartet"), | ||||
|       //     ), | ||||
|       //     Bubble( | ||||
|       //       style: styleOther, | ||||
|       //       child: const Text("Hi, das ist ein Testtext"), | ||||
|       //     ), | ||||
|       //     Bubble( | ||||
|       //       style: styleSelf, | ||||
|       //       child: Text(widget.userToken), | ||||
|       //     ) | ||||
|       //   ], | ||||
|       // ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										27
									
								
								lib/screen/pages/timetable/timetable.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | ||||
|  | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| class Timetable extends StatefulWidget { | ||||
|   const Timetable({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Timetable> createState() => _TimetableState(); | ||||
| } | ||||
|  | ||||
| class _TimetableState extends State<Timetable> { | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     List<ListTile> chats = List<ListTile>.empty(growable: true); | ||||
|  | ||||
|     return const Center( | ||||
|       child: Text("Not supported"), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								lib/screen/settings/about/about.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| class About extends StatelessWidget { | ||||
|   const About({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: const Text("Über diese App"), | ||||
|       ), | ||||
|       body: const Card( | ||||
|         elevation: 1, | ||||
|         borderOnForeground: true, | ||||
|         child: Text("Marianum Fulda"), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										90
									
								
								lib/screen/settings/settings.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,90 @@ | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
|  | ||||
| import '../../data/accountModel.dart'; | ||||
| import '../../data/incommingPackets/serverInfoPacket.dart'; | ||||
| import '../../widget/ListItem.dart'; | ||||
|  | ||||
| class Settings extends StatefulWidget { | ||||
|   const Settings({Key? key}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<Settings> createState() => _SettingsState(); | ||||
| } | ||||
|  | ||||
| class _SettingsState extends State<Settings> { | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     ServerInfoPacket().invoke(); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: const Text("Einstellungen"), | ||||
|       ), | ||||
|       body: ListView( | ||||
|         children: [ | ||||
|  | ||||
|           const ListItemNavigator(icon: Icons.info, text: "Über diese App", target: AboutDialog( | ||||
|             applicationIcon: Icon(Icons.send_time_extension_outlined), | ||||
|             applicationLegalese: "Released under MIT-License", | ||||
|             applicationName: "Marianum Fulda", | ||||
|             applicationVersion: "ALPHA 0.1", | ||||
|           )), | ||||
|  | ||||
|           ListTile( | ||||
|             leading: const Icon(Icons.logout), | ||||
|             title: const Text("Account abmelden"), | ||||
|             onTap: () { | ||||
|               Navigator.push(context, MaterialPageRoute(builder: (builder) => AlertDialog( | ||||
|                 title: const Text("Abmelden?"), | ||||
|                 content: const Text("Möchtest du dich wirklich abmelden?"), | ||||
|                 actions: [ | ||||
|                   TextButton( | ||||
|                     child: const Text("Abmelden"), | ||||
|                     onPressed: () { | ||||
|                       SharedPreferences.getInstance().then((value) => { | ||||
|                         value.clear(), | ||||
|                       }).then((value) => { | ||||
|                         Provider.of<AccountModel>(context, listen: false).logout(), | ||||
|                         Navigator.popUntil(context, (route) => !Navigator.canPop(context)), | ||||
|                       }); | ||||
|                     } | ||||
|                   ), | ||||
|  | ||||
|                   TextButton( | ||||
|                     child: const Text("Abbrechen"), | ||||
|                     onPressed: () { | ||||
|                       Navigator.pop(context); | ||||
|                     }, | ||||
|                   ), | ||||
|                 ], | ||||
|               ))); | ||||
|             }, | ||||
|           ), | ||||
|  | ||||
|           Consumer<ServerInfoPacket>( | ||||
|             builder: (context, serverInfo, child) { | ||||
|               return ListTile( | ||||
|                 leading: const Icon(Icons.home_work_outlined), | ||||
|                 title: Text("Server: ${serverInfo.serverName}"), | ||||
|                 subtitle: Text( | ||||
|                       "Betreiber: ${serverInfo.serverOwner}\n" | ||||
|                       "Serverversion: ${serverInfo.serverVersion}\n" | ||||
|                       "Rechtliche hinweise: ${serverInfo.legal}\n" | ||||
|                 ), | ||||
|               ); | ||||
|             }, | ||||
|           ) | ||||
|  | ||||
|         ], | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										28
									
								
								lib/widget/ListItem.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| class ListItemNavigator extends StatelessWidget { | ||||
|   const ListItemNavigator({Key? key, required this.icon, required this.text, required this.target, this.onLongPress, this.arrow = true}) : super(key: key); | ||||
|  | ||||
|   final IconData icon; | ||||
|   final String text; | ||||
|   final bool arrow; | ||||
|  | ||||
|   final Widget target; | ||||
|  | ||||
|   final GestureLongPressCallback? onLongPress; | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     onTabAction() => Navigator.push(context, MaterialPageRoute(builder: (context) => target)); | ||||
|     onLongPressAction() => onLongPress; | ||||
|  | ||||
|     return ListTile( | ||||
|       leading: Icon(icon), | ||||
|       title: Text(text), | ||||
|       trailing: arrow ? const Icon(Icons.arrow_right) : null, | ||||
|       onTap: onTabAction, | ||||
|       onLongPress: onLongPressAction, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										30
									
								
								lib/widget/loadingPacket.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,30 @@ | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:marianum_mobile/data/incomingPacket.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
|  | ||||
| class LoadingPacket extends StatefulWidget { | ||||
|   final Widget child; | ||||
|   final IncomingPacket packet; | ||||
|  | ||||
|   const LoadingPacket({Key? key, required this.child, required this.packet}) : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   State<LoadingPacket> createState() => _LoadingPacketState(); | ||||
| } | ||||
|  | ||||
| class _LoadingPacketState extends State<LoadingPacket> { | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return widget.packet.isReceived ? widget.child : Center( | ||||
|       child: Column( | ||||
|         mainAxisAlignment: MainAxisAlignment.center, | ||||
|         crossAxisAlignment: CrossAxisAlignment.center, | ||||
|         children: [ | ||||
|           const CircularProgressIndicator(), | ||||
|           Padding(padding: const EdgeInsets.all(20), child: Text("Request: '${widget.packet.packetId}'")) | ||||
|         ] | ||||
|       ) | ||||
|     ); | ||||
|   } | ||||
| } | ||||