Implement local HTTP Api usage
This commit is contained in:
		
							
								
								
									
										304
									
								
								.idea/libraries/Dart_Packages.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										304
									
								
								.idea/libraries/Dart_Packages.xml
									
									
									
										generated
									
									
									
								
							@@ -2,6 +2,20 @@
 | 
				
			|||||||
  <library name="Dart Packages" type="DartPackagesLibraryType">
 | 
					  <library name="Dart Packages" type="DartPackagesLibraryType">
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
      <option name="packageNameToDirsMap">
 | 
					      <option name="packageNameToDirsMap">
 | 
				
			||||||
 | 
					        <entry key="_fe_analyzer_shared">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-50.0.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="analyzer">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-5.2.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="another_flushbar">
 | 
					        <entry key="another_flushbar">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -26,7 +40,7 @@
 | 
				
			|||||||
        <entry key="args">
 | 
					        <entry key="args">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.2/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.4.0/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -51,6 +65,62 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="build">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/build-2.3.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="build_config">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_config-1.1.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="build_daemon">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_daemon-3.1.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="build_resolvers">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.1.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="build_runner">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner-2.3.3/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="build_runner_core">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner_core-7.2.7/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="built_collection">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/built_collection-5.1.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="built_value">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/built_value-8.4.3/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="characters">
 | 
					        <entry key="characters">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -58,6 +128,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="checked_yaml">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.2/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="clock">
 | 
					        <entry key="clock">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -65,6 +142,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="code_builder">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/code_builder-4.4.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="collection">
 | 
					        <entry key="collection">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -100,6 +184,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="dart_style">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/dart_style-2.2.4/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="dio">
 | 
					        <entry key="dio">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -128,6 +219,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="fixnum">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/fixnum-1.0.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="flutter">
 | 
					        <entry key="flutter">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -173,7 +271,28 @@
 | 
				
			|||||||
        <entry key="font_awesome_flutter">
 | 
					        <entry key="font_awesome_flutter">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-10.3.0/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-10.4.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="frontend_server_client">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/frontend_server_client-3.2.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="glob">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/glob-2.1.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="graphs">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/graphs-2.2.0/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -191,6 +310,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="http_multi_server">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.2.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="http_parser">
 | 
					        <entry key="http_parser">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -201,7 +327,7 @@
 | 
				
			|||||||
        <entry key="image">
 | 
					        <entry key="image">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/image-4.0.12/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/image-4.0.15/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -212,6 +338,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="io">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/io-1.0.4/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="jiffy">
 | 
					        <entry key="jiffy">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -226,6 +359,20 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="json_annotation">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.8.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="json_serializable">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/json_serializable-6.6.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="lints">
 | 
					        <entry key="lints">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -233,6 +380,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="logging">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/logging-1.1.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="matcher">
 | 
					        <entry key="matcher">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -254,6 +408,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="mime">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/mime-1.0.4/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="nested">
 | 
					        <entry key="nested">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -261,6 +422,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="package_config">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/package_config-2.1.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="path">
 | 
					        <entry key="path">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -271,7 +439,7 @@
 | 
				
			|||||||
        <entry key="path_provider_linux">
 | 
					        <entry key="path_provider_linux">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -317,6 +485,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="pool">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/pool-1.5.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="process">
 | 
					        <entry key="process">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -331,6 +506,20 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="pub_semver">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/pub_semver-2.1.3/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="pubspec_parse">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/pubspec_parse-1.2.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="quiver">
 | 
					        <entry key="quiver">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -355,7 +544,7 @@
 | 
				
			|||||||
        <entry key="shared_preferences_foundation">
 | 
					        <entry key="shared_preferences_foundation">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.2/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -387,6 +576,20 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="shelf">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shelf-1.4.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="shelf_web_socket">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-1.0.3/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="sign_in_button">
 | 
					        <entry key="sign_in_button">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -401,6 +604,20 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="source_gen">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/source_gen-1.2.7/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="source_helper">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/source_helper-1.3.3/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="source_span">
 | 
					        <entry key="source_span">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -422,6 +639,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="stream_transform">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/stream_transform-2.1.0/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="string_scanner">
 | 
					        <entry key="string_scanner">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -450,6 +674,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="timing">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/timing-1.0.1/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="typed_data">
 | 
					        <entry key="typed_data">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -467,7 +698,7 @@
 | 
				
			|||||||
        <entry key="url_launcher">
 | 
					        <entry key="url_launcher">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.8/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.9/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -481,7 +712,7 @@
 | 
				
			|||||||
        <entry key="url_launcher_ios">
 | 
					        <entry key="url_launcher_ios">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.18/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.1.0/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -527,6 +758,13 @@
 | 
				
			|||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
 | 
					        <entry key="watcher">
 | 
				
			||||||
 | 
					          <value>
 | 
				
			||||||
 | 
					            <list>
 | 
				
			||||||
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.2/lib" />
 | 
				
			||||||
 | 
					            </list>
 | 
				
			||||||
 | 
					          </value>
 | 
				
			||||||
 | 
					        </entry>
 | 
				
			||||||
        <entry key="web_socket_channel">
 | 
					        <entry key="web_socket_channel">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
@@ -551,7 +789,7 @@
 | 
				
			|||||||
        <entry key="xdg_directories">
 | 
					        <entry key="xdg_directories">
 | 
				
			||||||
          <value>
 | 
					          <value>
 | 
				
			||||||
            <list>
 | 
					            <list>
 | 
				
			||||||
              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+3/lib" />
 | 
					              <option value="/opt/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-1.0.0/lib" />
 | 
				
			||||||
            </list>
 | 
					            </list>
 | 
				
			||||||
          </value>
 | 
					          </value>
 | 
				
			||||||
        </entry>
 | 
					        </entry>
 | 
				
			||||||
@@ -572,81 +810,115 @@
 | 
				
			|||||||
      </option>
 | 
					      </option>
 | 
				
			||||||
    </properties>
 | 
					    </properties>
 | 
				
			||||||
    <CLASSES>
 | 
					    <CLASSES>
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-50.0.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-5.2.0/lib" />
 | 
				
			||||||
      <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_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/another_transformer_page_view-2.0.1/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.6/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.6/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.2/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.4.0/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/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/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/bubble-1.2.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/build-2.3.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_config-1.1.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_daemon-3.1.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.1.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner-2.3.3/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner_core-7.2.7/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/built_collection-5.1.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/built_value-8.4.3/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/characters-1.2.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.2/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/clock-1.1.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/code_builder-4.4.0/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/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/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/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/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/cupertino_icons-1.0.5/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/dart_style-2.2.4/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/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/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/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/file-6.1.4/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/fixnum-1.0.1/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_lints-2.0.1/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_login-4.1.1/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_login-4.1.1/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.17/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.17/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-10.3.0/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/font_awesome_flutter-10.4.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/frontend_server_client-3.2.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/glob-2.1.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/graphs-2.2.0/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/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-0.13.5/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.2.1/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/http_parser-4.0.2/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/image-4.0.12/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/image-4.0.15/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/intl-0.17.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/io-1.0.4/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/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/js-0.6.4/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.8.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/json_serializable-6.6.1/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/lints-2.0.1/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/logging-1.1.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/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/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/meta-1.8.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/mime-1.0.4/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/nested-1.0.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/package_config-2.1.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-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_linux-2.1.8/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_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/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/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/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/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/pointycastle-3.6.2/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/pool-1.5.1/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/process-4.2.4/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/provider-6.0.5/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/provider-6.0.5/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/pub_semver-2.1.3/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/pubspec_parse-1.2.1/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-3.2.1/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-3.2.1/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.2/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3/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_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_web-2.0.4/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shelf-1.4.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-1.0.3/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/sign_in_button-3.1.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/source_gen-1.2.7/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/source_helper-1.3.3/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/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/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/stream_channel-2.1.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/stream_transform-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/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/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/test_api-0.4.12/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/timetable_view-0.3.0/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/timetable_view-0.3.0/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/timing-1.0.1/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/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/universal_io-2.0.4/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.8/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.9/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.23/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.23/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.18/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.1.0/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.2/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.2/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.2/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.2/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_platform_interface-2.1.1/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.14/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.14/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.3/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.3/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/vector_math-2.1.2/lib" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.2/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.3.0/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.3.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/webdav_client-1.1.8/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.1.3/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.1.3/lib" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+3/lib" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-1.0.0/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/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/.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/bin/cache/pkg/sky_engine/lib" />
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								.idea/libraries/Flutter_Plugins.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								.idea/libraries/Flutter_Plugins.xml
									
									
									
										generated
									
									
									
								
							@@ -1,7 +1,6 @@
 | 
				
			|||||||
<component name="libraryTable">
 | 
					<component name="libraryTable">
 | 
				
			||||||
  <library name="Flutter Plugins" type="FlutterPluginsLibraryType">
 | 
					  <library name="Flutter Plugins" type="FlutterPluginsLibraryType">
 | 
				
			||||||
    <CLASSES>
 | 
					    <CLASSES>
 | 
				
			||||||
      <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_web-2.0.4" />
 | 
					      <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/path_provider_windows-2.1.3" />
 | 
					      <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_windows-2.1.3" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3" />
 | 
				
			||||||
@@ -11,12 +10,13 @@
 | 
				
			|||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.14" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.14" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.3" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.3" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.18" />
 | 
					 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.2" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.2" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.2" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.2" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.23" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_android-6.0.23" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.2" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3" />
 | 
				
			||||||
      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.8" />
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.1.9" />
 | 
				
			||||||
 | 
					      <root url="file:///opt/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_ios-6.1.0" />
 | 
				
			||||||
    </CLASSES>
 | 
					    </CLASSES>
 | 
				
			||||||
    <JAVADOC />
 | 
					    <JAVADOC />
 | 
				
			||||||
    <SOURCES />
 | 
					    <SOURCES />
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								lib/api/apiError.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								lib/api/apiError.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					class ApiError {
 | 
				
			||||||
 | 
					  String message;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ApiError(this.message);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								lib/api/apiRequest.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								lib/api/apiRequest.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:http/http.dart' as http;
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/apiError.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ApiRequest {
 | 
				
			||||||
 | 
					  Uri endpoint;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ApiRequest(this.endpoint);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<http.Response> get(Map<String, String>? headers) async {
 | 
				
			||||||
 | 
					    return await http.get(endpoint, headers: headers);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<http.Response> post(String data, Map<String, String>? headers) async {
 | 
				
			||||||
 | 
					    log("Fetching: ${data}");
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      http.Response response = await http
 | 
				
			||||||
 | 
					          .post(endpoint, body: data, headers: headers)
 | 
				
			||||||
 | 
					          .timeout(
 | 
				
			||||||
 | 
					          const Duration(seconds: 10),
 | 
				
			||||||
 | 
					          onTimeout: () {
 | 
				
			||||||
 | 
					            log("timeout!");
 | 
				
			||||||
 | 
					            throw ApiError("Network timeout");
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(response.statusCode != 200) {
 | 
				
			||||||
 | 
					        log("Got ${response.statusCode}");
 | 
				
			||||||
 | 
					        throw ApiError("Service response invalid, got status ${response.statusCode}");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } on Exception catch(e) {
 | 
				
			||||||
 | 
					      throw ApiError("Http: ${e.toString()}");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								lib/api/talk/requestLoginTest.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								lib/api/talk/requestLoginTest.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					import 'package:marianum_mobile/api/apiRequest.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RequestLoginTest extends ApiRequest {
 | 
				
			||||||
 | 
					  RequestLoginTest(super.endpoint);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3
									
								
								lib/api/webuntis/apiParams.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								lib/api/webuntis/apiParams.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					class ApiParams {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								lib/api/webuntis/apiResponse.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								lib/api/webuntis/apiResponse.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					import 'package:http/http.dart' as http;
 | 
				
			||||||
 | 
					import 'package:json_annotation/json_annotation.dart';
 | 
				
			||||||
 | 
					abstract class ApiResponse {
 | 
				
			||||||
 | 
					  @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					  late http.Response rawResponse;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										55
									
								
								lib/api/webuntis/queries/authenticate/authenticate.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								lib/api/webuntis/queries/authenticate/authenticate.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					import 'dart:async';
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/webuntisApi.dart';
 | 
				
			||||||
 | 
					import 'package:shared_preferences/shared_preferences.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'authenticateParams.dart';
 | 
				
			||||||
 | 
					import 'authenticateResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Authenticate extends WebuntisApi {
 | 
				
			||||||
 | 
					  AuthenticateParams param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Authenticate(this.param) : super("authenticate", param, authenticatedResponse: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Future<AuthenticateResponse> run() async {
 | 
				
			||||||
 | 
					    awaitingResponse = true;
 | 
				
			||||||
 | 
					    String rawAnswer = await query(this);
 | 
				
			||||||
 | 
					    AuthenticateResponse response = finalize(AuthenticateResponse.fromJson(jsonDecode(rawAnswer)['result']));
 | 
				
			||||||
 | 
					    _lastResponse = response;
 | 
				
			||||||
 | 
					    awaitedResponse.complete();
 | 
				
			||||||
 | 
					    return response;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static bool awaitingResponse = false;
 | 
				
			||||||
 | 
					  static Completer awaitedResponse = Completer();
 | 
				
			||||||
 | 
					  static AuthenticateResponse? _lastResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static Future<void> createSession() async {
 | 
				
			||||||
 | 
					    SharedPreferences preferences = await SharedPreferences.getInstance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _lastResponse = await Authenticate(
 | 
				
			||||||
 | 
					        AuthenticateParams(
 | 
				
			||||||
 | 
					          user: preferences.getString("username")!,
 | 
				
			||||||
 | 
					          password: preferences.getString("password")!,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    ).run();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static Future<AuthenticateResponse> getSession() async {
 | 
				
			||||||
 | 
					    if(awaitingResponse) {
 | 
				
			||||||
 | 
					      log("Other query in progress... waiting");
 | 
				
			||||||
 | 
					      await awaitedResponse.future;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(_lastResponse == null) {
 | 
				
			||||||
 | 
					      log("Not authenticated... requesting");
 | 
				
			||||||
 | 
					      awaitingResponse = true;
 | 
				
			||||||
 | 
					      await createSession();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return _lastResponse!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					import 'package:json_annotation/json_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiParams.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'authenticateParams.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					class AuthenticateParams extends ApiParams {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String user;
 | 
				
			||||||
 | 
					  String password;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  AuthenticateParams({required this.user, required this.password});
 | 
				
			||||||
 | 
					  factory AuthenticateParams.fromJson(Map<String, dynamic> json) => _$AuthenticateParamsFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$AuthenticateParamsToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'authenticateParams.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AuthenticateParams _$AuthenticateParamsFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    AuthenticateParams(
 | 
				
			||||||
 | 
					      user: json['user'] as String,
 | 
				
			||||||
 | 
					      password: json['password'] as String,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$AuthenticateParamsToJson(AuthenticateParams instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'user': instance.user,
 | 
				
			||||||
 | 
					      'password': instance.password,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					import 'package:json_annotation/json_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'authenticateResponse.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					class AuthenticateResponse extends ApiResponse {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String sessionId;
 | 
				
			||||||
 | 
					  int personType;
 | 
				
			||||||
 | 
					  int personId;
 | 
				
			||||||
 | 
					  int klasseId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  AuthenticateResponse(this.sessionId, this.personType, this.personId, this.klasseId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory AuthenticateResponse.fromJson(Map<String, dynamic> json) => _$AuthenticateResponseFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$AuthenticateResponseToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'authenticateResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AuthenticateResponse _$AuthenticateResponseFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    AuthenticateResponse(
 | 
				
			||||||
 | 
					      json['sessionId'] as String,
 | 
				
			||||||
 | 
					      json['personType'] as int,
 | 
				
			||||||
 | 
					      json['personId'] as int,
 | 
				
			||||||
 | 
					      json['klasseId'] as int,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$AuthenticateResponseToJson(
 | 
				
			||||||
 | 
					        AuthenticateResponse instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'sessionId': instance.sessionId,
 | 
				
			||||||
 | 
					      'personType': instance.personType,
 | 
				
			||||||
 | 
					      'personId': instance.personId,
 | 
				
			||||||
 | 
					      'klasseId': instance.klasseId,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
							
								
								
									
										17
									
								
								lib/api/webuntis/queries/getRooms/getRooms.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lib/api/webuntis/queries/getRooms/getRooms.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiResponse.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/webuntisApi.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'getRoomsResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GetRooms extends WebuntisApi {
 | 
				
			||||||
 | 
					  GetRooms() : super("getRooms", null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Future<GetRoomsResponse> run() async {
 | 
				
			||||||
 | 
					    String rawAnswer = await query(this);
 | 
				
			||||||
 | 
					    return finalize(GetRoomsResponse.fromJson(jsonDecode(rawAnswer)));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										29
									
								
								lib/api/webuntis/queries/getRooms/getRoomsResponse.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								lib/api/webuntis/queries/getRooms/getRoomsResponse.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					import 'package:json_annotation/json_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'getRoomsResponse.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					class GetRoomsResponse extends ApiResponse {
 | 
				
			||||||
 | 
					  Set<GetRoomsResponseObject> result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetRoomsResponse(this.result);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetRoomsResponse.fromJson(Map<String, dynamic> json) => _$GetRoomsResponseFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetRoomsResponseToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable(explicitToJson: true)
 | 
				
			||||||
 | 
					class GetRoomsResponseObject {
 | 
				
			||||||
 | 
					  int id;
 | 
				
			||||||
 | 
					  String name;
 | 
				
			||||||
 | 
					  String longName;
 | 
				
			||||||
 | 
					  bool active;
 | 
				
			||||||
 | 
					  String building;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetRoomsResponseObject(this.id, this.name, this.longName, this.active, this.building);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetRoomsResponseObject.fromJson(Map<String, dynamic> json) => _$GetRoomsResponseObjectFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetRoomsResponseObjectToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										40
									
								
								lib/api/webuntis/queries/getRooms/getRoomsResponse.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								lib/api/webuntis/queries/getRooms/getRoomsResponse.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'getRoomsResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetRoomsResponse _$GetRoomsResponseFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetRoomsResponse(
 | 
				
			||||||
 | 
					      (json['result'] as List<dynamic>)
 | 
				
			||||||
 | 
					          .map(
 | 
				
			||||||
 | 
					              (e) => GetRoomsResponseObject.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					          .toSet(),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetRoomsResponseToJson(GetRoomsResponse instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'result': instance.result.toList(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetRoomsResponseObject _$GetRoomsResponseObjectFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetRoomsResponseObject(
 | 
				
			||||||
 | 
					      json['id'] as int,
 | 
				
			||||||
 | 
					      json['name'] as String,
 | 
				
			||||||
 | 
					      json['longName'] as String,
 | 
				
			||||||
 | 
					      json['active'] as bool,
 | 
				
			||||||
 | 
					      json['building'] as String,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetRoomsResponseObjectToJson(
 | 
				
			||||||
 | 
					        GetRoomsResponseObject instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'name': instance.name,
 | 
				
			||||||
 | 
					      'longName': instance.longName,
 | 
				
			||||||
 | 
					      'active': instance.active,
 | 
				
			||||||
 | 
					      'building': instance.building,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
							
								
								
									
										22
									
								
								lib/api/webuntis/queries/getTimetable/getTimetable.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								lib/api/webuntis/queries/getTimetable/getTimetable.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiResponse.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/webuntisApi.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'getTimetableParams.dart';
 | 
				
			||||||
 | 
					import 'getTimetableResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GetTimetable extends WebuntisApi {
 | 
				
			||||||
 | 
					  GetTimetableParams params;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetable(this.params) : super("getTimetable", params);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Future<GetTimetableResponse> run() async {
 | 
				
			||||||
 | 
					    String rawAnswer = await query(this);
 | 
				
			||||||
 | 
					    log(rawAnswer);
 | 
				
			||||||
 | 
					    return finalize(GetTimetableResponse.fromJson(jsonDecode(rawAnswer)));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					import 'package:json_annotation/json_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiParams.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'getTimetableParams.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable(explicitToJson: true)
 | 
				
			||||||
 | 
					class GetTimetableParams extends ApiParams {
 | 
				
			||||||
 | 
					  GetTimetableParamsOptions options;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableParams({required this.options});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetTimetableParams.fromJson(Map<String, dynamic> json) => _$GetTimetableParamsFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableParamsToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable(explicitToJson: true)
 | 
				
			||||||
 | 
					class GetTimetableParamsOptions {
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsElement element;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  int? startDate;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  int? endDate;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? onlyBaseTimetable;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? showBooking;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? showInfo;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? showSubstText;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? showLsText;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? showLsNumber;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  bool? showStudentgroup;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields? klasseFields;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields? roomFields;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields? subjectFields;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields? teacherFields;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableParamsOptions({
 | 
				
			||||||
 | 
					    required this.element,
 | 
				
			||||||
 | 
					    this.startDate,
 | 
				
			||||||
 | 
					    this.endDate,
 | 
				
			||||||
 | 
					    this.onlyBaseTimetable,
 | 
				
			||||||
 | 
					    this.showBooking,
 | 
				
			||||||
 | 
					    this.showInfo,
 | 
				
			||||||
 | 
					    this.showSubstText,
 | 
				
			||||||
 | 
					    this.showLsText,
 | 
				
			||||||
 | 
					    this.showLsNumber,
 | 
				
			||||||
 | 
					    this.showStudentgroup,
 | 
				
			||||||
 | 
					    this.klasseFields,
 | 
				
			||||||
 | 
					    this.roomFields,
 | 
				
			||||||
 | 
					    this.subjectFields,
 | 
				
			||||||
 | 
					    this.teacherFields
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetTimetableParamsOptions.fromJson(Map<String, dynamic> json) => _$GetTimetableParamsOptionsFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableParamsOptionsToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum GetTimetableParamsOptionsFields {
 | 
				
			||||||
 | 
					  @JsonValue("id") id,
 | 
				
			||||||
 | 
					  @JsonValue("name") name,
 | 
				
			||||||
 | 
					  @JsonValue("longname") longname,
 | 
				
			||||||
 | 
					  @JsonValue("externalkey") externalkey,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					class GetTimetableParamsOptionsElement {
 | 
				
			||||||
 | 
					  int id;
 | 
				
			||||||
 | 
					  int type;
 | 
				
			||||||
 | 
					  @JsonKey(includeIfNull: false)
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsElementKeyType? keyType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsElement({required this.id, required this.type, this.keyType});
 | 
				
			||||||
 | 
					  factory GetTimetableParamsOptionsElement.fromJson(Map<String, dynamic> json) => _$GetTimetableParamsOptionsElementFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableParamsOptionsElementToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum GetTimetableParamsOptionsElementKeyType {
 | 
				
			||||||
 | 
					  @JsonValue("id") id,
 | 
				
			||||||
 | 
					  @JsonValue("name") name,
 | 
				
			||||||
 | 
					  @JsonValue("externalkey") externalkey
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										114
									
								
								lib/api/webuntis/queries/getTimetable/getTimetableParams.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								lib/api/webuntis/queries/getTimetable/getTimetableParams.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'getTimetableParams.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableParams _$GetTimetableParamsFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetTimetableParams(
 | 
				
			||||||
 | 
					      options: GetTimetableParamsOptions.fromJson(
 | 
				
			||||||
 | 
					          json['options'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableParamsToJson(GetTimetableParams instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'options': instance.options.toJson(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableParamsOptions _$GetTimetableParamsOptionsFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetTimetableParamsOptions(
 | 
				
			||||||
 | 
					      element: GetTimetableParamsOptionsElement.fromJson(
 | 
				
			||||||
 | 
					          json['element'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					      startDate: json['startDate'] as int?,
 | 
				
			||||||
 | 
					      endDate: json['endDate'] as int?,
 | 
				
			||||||
 | 
					      onlyBaseTimetable: json['onlyBaseTimetable'] as bool?,
 | 
				
			||||||
 | 
					      showBooking: json['showBooking'] as bool?,
 | 
				
			||||||
 | 
					      showInfo: json['showInfo'] as bool?,
 | 
				
			||||||
 | 
					      showSubstText: json['showSubstText'] as bool?,
 | 
				
			||||||
 | 
					      showLsText: json['showLsText'] as bool?,
 | 
				
			||||||
 | 
					      showLsNumber: json['showLsNumber'] as bool?,
 | 
				
			||||||
 | 
					      showStudentgroup: json['showStudentgroup'] as bool?,
 | 
				
			||||||
 | 
					      klasseFields: $enumDecodeNullable(
 | 
				
			||||||
 | 
					          _$GetTimetableParamsOptionsFieldsEnumMap, json['klasseFields']),
 | 
				
			||||||
 | 
					      roomFields: $enumDecodeNullable(
 | 
				
			||||||
 | 
					          _$GetTimetableParamsOptionsFieldsEnumMap, json['roomFields']),
 | 
				
			||||||
 | 
					      subjectFields: $enumDecodeNullable(
 | 
				
			||||||
 | 
					          _$GetTimetableParamsOptionsFieldsEnumMap, json['subjectFields']),
 | 
				
			||||||
 | 
					      teacherFields: $enumDecodeNullable(
 | 
				
			||||||
 | 
					          _$GetTimetableParamsOptionsFieldsEnumMap, json['teacherFields']),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableParamsOptionsToJson(
 | 
				
			||||||
 | 
					    GetTimetableParamsOptions instance) {
 | 
				
			||||||
 | 
					  final val = <String, dynamic>{
 | 
				
			||||||
 | 
					    'element': instance.element.toJson(),
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void writeNotNull(String key, dynamic value) {
 | 
				
			||||||
 | 
					    if (value != null) {
 | 
				
			||||||
 | 
					      val[key] = value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  writeNotNull('startDate', instance.startDate);
 | 
				
			||||||
 | 
					  writeNotNull('endDate', instance.endDate);
 | 
				
			||||||
 | 
					  writeNotNull('onlyBaseTimetable', instance.onlyBaseTimetable);
 | 
				
			||||||
 | 
					  writeNotNull('showBooking', instance.showBooking);
 | 
				
			||||||
 | 
					  writeNotNull('showInfo', instance.showInfo);
 | 
				
			||||||
 | 
					  writeNotNull('showSubstText', instance.showSubstText);
 | 
				
			||||||
 | 
					  writeNotNull('showLsText', instance.showLsText);
 | 
				
			||||||
 | 
					  writeNotNull('showLsNumber', instance.showLsNumber);
 | 
				
			||||||
 | 
					  writeNotNull('showStudentgroup', instance.showStudentgroup);
 | 
				
			||||||
 | 
					  writeNotNull('klasseFields',
 | 
				
			||||||
 | 
					      _$GetTimetableParamsOptionsFieldsEnumMap[instance.klasseFields]);
 | 
				
			||||||
 | 
					  writeNotNull('roomFields',
 | 
				
			||||||
 | 
					      _$GetTimetableParamsOptionsFieldsEnumMap[instance.roomFields]);
 | 
				
			||||||
 | 
					  writeNotNull('subjectFields',
 | 
				
			||||||
 | 
					      _$GetTimetableParamsOptionsFieldsEnumMap[instance.subjectFields]);
 | 
				
			||||||
 | 
					  writeNotNull('teacherFields',
 | 
				
			||||||
 | 
					      _$GetTimetableParamsOptionsFieldsEnumMap[instance.teacherFields]);
 | 
				
			||||||
 | 
					  return val;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const _$GetTimetableParamsOptionsFieldsEnumMap = {
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields.id: 'id',
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields.name: 'name',
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields.longname: 'longname',
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsFields.externalkey: 'externalkey',
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableParamsOptionsElement _$GetTimetableParamsOptionsElementFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetTimetableParamsOptionsElement(
 | 
				
			||||||
 | 
					      id: json['id'] as int,
 | 
				
			||||||
 | 
					      type: json['type'] as int,
 | 
				
			||||||
 | 
					      keyType: $enumDecodeNullable(
 | 
				
			||||||
 | 
					          _$GetTimetableParamsOptionsElementKeyTypeEnumMap, json['keyType']),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableParamsOptionsElementToJson(
 | 
				
			||||||
 | 
					    GetTimetableParamsOptionsElement instance) {
 | 
				
			||||||
 | 
					  final val = <String, dynamic>{
 | 
				
			||||||
 | 
					    'id': instance.id,
 | 
				
			||||||
 | 
					    'type': instance.type,
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void writeNotNull(String key, dynamic value) {
 | 
				
			||||||
 | 
					    if (value != null) {
 | 
				
			||||||
 | 
					      val[key] = value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  writeNotNull('keyType',
 | 
				
			||||||
 | 
					      _$GetTimetableParamsOptionsElementKeyTypeEnumMap[instance.keyType]);
 | 
				
			||||||
 | 
					  return val;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const _$GetTimetableParamsOptionsElementKeyTypeEnumMap = {
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsElementKeyType.id: 'id',
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsElementKeyType.name: 'name',
 | 
				
			||||||
 | 
					  GetTimetableParamsOptionsElementKeyType.externalkey: 'externalkey',
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					import 'package:json_annotation/json_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'getTimetableResponse.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable(explicitToJson: true)
 | 
				
			||||||
 | 
					class GetTimetableResponse extends ApiResponse {
 | 
				
			||||||
 | 
					  Set<GetTimetableResponseObject> result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableResponse(this.result);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetTimetableResponse.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableResponseToJson(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable(explicitToJson: true)
 | 
				
			||||||
 | 
					class GetTimetableResponseObject {
 | 
				
			||||||
 | 
					  int id;
 | 
				
			||||||
 | 
					  int date;
 | 
				
			||||||
 | 
					  int startTime;
 | 
				
			||||||
 | 
					  int endTime;
 | 
				
			||||||
 | 
					  String? lstype;
 | 
				
			||||||
 | 
					  String? code;
 | 
				
			||||||
 | 
					  String? info;
 | 
				
			||||||
 | 
					  String? substText;
 | 
				
			||||||
 | 
					  String? lstext;
 | 
				
			||||||
 | 
					  int? lsnumber;
 | 
				
			||||||
 | 
					  String? statflags;
 | 
				
			||||||
 | 
					  String? activityType;
 | 
				
			||||||
 | 
					  String? sg;
 | 
				
			||||||
 | 
					  String? bkRemark;
 | 
				
			||||||
 | 
					  String? bkText;
 | 
				
			||||||
 | 
					  List<dynamic> kl;
 | 
				
			||||||
 | 
					  List<dynamic> te;
 | 
				
			||||||
 | 
					  List<dynamic> su;
 | 
				
			||||||
 | 
					  List<dynamic> ro;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableResponseObject({
 | 
				
			||||||
 | 
					    required this.id,
 | 
				
			||||||
 | 
					    required this.date,
 | 
				
			||||||
 | 
					    required this.startTime,
 | 
				
			||||||
 | 
					    required this.endTime,
 | 
				
			||||||
 | 
					    this.lstype,
 | 
				
			||||||
 | 
					    this.code,
 | 
				
			||||||
 | 
					    this.info,
 | 
				
			||||||
 | 
					    this.substText,
 | 
				
			||||||
 | 
					    this.lstext,
 | 
				
			||||||
 | 
					    this.lsnumber,
 | 
				
			||||||
 | 
					    this.statflags,
 | 
				
			||||||
 | 
					    this.activityType,
 | 
				
			||||||
 | 
					    this.sg,
 | 
				
			||||||
 | 
					    this.bkRemark,
 | 
				
			||||||
 | 
					    required this.kl,
 | 
				
			||||||
 | 
					    required this.te,
 | 
				
			||||||
 | 
					    required this.su,
 | 
				
			||||||
 | 
					    required this.ro
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetTimetableResponseObject.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableResponseObjectToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable(explicitToJson: true)
 | 
				
			||||||
 | 
					class GetTimetableResponseObjectFields {
 | 
				
			||||||
 | 
					  List<GetTimetableResponseObjectFieldsObject>? te;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableResponseObjectFields(this.te);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetTimetableResponseObjectFields.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectFieldsFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableResponseObjectFieldsToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					class GetTimetableResponseObjectFieldsObject {
 | 
				
			||||||
 | 
					  int? id;
 | 
				
			||||||
 | 
					  String? name;
 | 
				
			||||||
 | 
					  String? longname;
 | 
				
			||||||
 | 
					  String? externalkey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetTimetableResponseObjectFieldsObject({this.id, this.name, this.longname, this.externalkey});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory GetTimetableResponseObjectFieldsObject.fromJson(Map<String, dynamic> json) => _$GetTimetableResponseObjectFieldsObjectFromJson(json);
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson() => _$GetTimetableResponseObjectFieldsObjectToJson(this);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'getTimetableResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableResponse _$GetTimetableResponseFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetTimetableResponse(
 | 
				
			||||||
 | 
					      (json['result'] as List<dynamic>)
 | 
				
			||||||
 | 
					          .map((e) =>
 | 
				
			||||||
 | 
					              GetTimetableResponseObject.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					          .toSet(),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableResponseToJson(
 | 
				
			||||||
 | 
					        GetTimetableResponse instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'result': instance.result.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableResponseObject _$GetTimetableResponseObjectFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetTimetableResponseObject(
 | 
				
			||||||
 | 
					      id: json['id'] as int,
 | 
				
			||||||
 | 
					      date: json['date'] as int,
 | 
				
			||||||
 | 
					      startTime: json['startTime'] as int,
 | 
				
			||||||
 | 
					      endTime: json['endTime'] as int,
 | 
				
			||||||
 | 
					      lstype: json['lstype'] as String?,
 | 
				
			||||||
 | 
					      code: json['code'] as String?,
 | 
				
			||||||
 | 
					      info: json['info'] as String?,
 | 
				
			||||||
 | 
					      substText: json['substText'] as String?,
 | 
				
			||||||
 | 
					      lstext: json['lstext'] as String?,
 | 
				
			||||||
 | 
					      lsnumber: json['lsnumber'] as int?,
 | 
				
			||||||
 | 
					      statflags: json['statflags'] as String?,
 | 
				
			||||||
 | 
					      activityType: json['activityType'] as String?,
 | 
				
			||||||
 | 
					      sg: json['sg'] as String?,
 | 
				
			||||||
 | 
					      bkRemark: json['bkRemark'] as String?,
 | 
				
			||||||
 | 
					      kl: json['kl'] as List<dynamic>,
 | 
				
			||||||
 | 
					      te: json['te'] as List<dynamic>,
 | 
				
			||||||
 | 
					      su: json['su'] as List<dynamic>,
 | 
				
			||||||
 | 
					      ro: json['ro'] as List<dynamic>,
 | 
				
			||||||
 | 
					    )..bkText = json['bkText'] as String?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableResponseObjectToJson(
 | 
				
			||||||
 | 
					        GetTimetableResponseObject instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'date': instance.date,
 | 
				
			||||||
 | 
					      'startTime': instance.startTime,
 | 
				
			||||||
 | 
					      'endTime': instance.endTime,
 | 
				
			||||||
 | 
					      'lstype': instance.lstype,
 | 
				
			||||||
 | 
					      'code': instance.code,
 | 
				
			||||||
 | 
					      'info': instance.info,
 | 
				
			||||||
 | 
					      'substText': instance.substText,
 | 
				
			||||||
 | 
					      'lstext': instance.lstext,
 | 
				
			||||||
 | 
					      'lsnumber': instance.lsnumber,
 | 
				
			||||||
 | 
					      'statflags': instance.statflags,
 | 
				
			||||||
 | 
					      'activityType': instance.activityType,
 | 
				
			||||||
 | 
					      'sg': instance.sg,
 | 
				
			||||||
 | 
					      'bkRemark': instance.bkRemark,
 | 
				
			||||||
 | 
					      'bkText': instance.bkText,
 | 
				
			||||||
 | 
					      'kl': instance.kl,
 | 
				
			||||||
 | 
					      'te': instance.te,
 | 
				
			||||||
 | 
					      'su': instance.su,
 | 
				
			||||||
 | 
					      'ro': instance.ro,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableResponseObjectFields _$GetTimetableResponseObjectFieldsFromJson(
 | 
				
			||||||
 | 
					        Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    GetTimetableResponseObjectFields(
 | 
				
			||||||
 | 
					      (json['te'] as List<dynamic>?)
 | 
				
			||||||
 | 
					          ?.map((e) => GetTimetableResponseObjectFieldsObject.fromJson(
 | 
				
			||||||
 | 
					              e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					          .toList(),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableResponseObjectFieldsToJson(
 | 
				
			||||||
 | 
					        GetTimetableResponseObjectFields instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'te': instance.te?.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GetTimetableResponseObjectFieldsObject
 | 
				
			||||||
 | 
					    _$GetTimetableResponseObjectFieldsObjectFromJson(
 | 
				
			||||||
 | 
					            Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					        GetTimetableResponseObjectFieldsObject(
 | 
				
			||||||
 | 
					          id: json['id'] as int?,
 | 
				
			||||||
 | 
					          name: json['name'] as String?,
 | 
				
			||||||
 | 
					          longname: json['longname'] as String?,
 | 
				
			||||||
 | 
					          externalkey: json['externalkey'] as String?,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$GetTimetableResponseObjectFieldsObjectToJson(
 | 
				
			||||||
 | 
					        GetTimetableResponseObjectFieldsObject instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'name': instance.name,
 | 
				
			||||||
 | 
					      'longname': instance.longname,
 | 
				
			||||||
 | 
					      'externalkey': instance.externalkey,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
							
								
								
									
										54
									
								
								lib/api/webuntis/webuntisApi.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								lib/api/webuntis/webuntisApi.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/apiRequest.dart';
 | 
				
			||||||
 | 
					import 'package:http/http.dart' as http;
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/webuntisError.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/apiResponse.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'apiParams.dart';
 | 
				
			||||||
 | 
					import 'queries/authenticate/authenticate.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					abstract class WebuntisApi extends ApiRequest {
 | 
				
			||||||
 | 
					  String method;
 | 
				
			||||||
 | 
					  ApiParams? genericParam;
 | 
				
			||||||
 | 
					  http.Response? response;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool authenticatedResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  WebuntisApi(this.method, this.genericParam, {this.authenticatedResponse = true}) : super(Uri.parse("https://peleus.webuntis.com/WebUntis/jsonrpc.do?school=marianum-fulda"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<String> query(WebuntisApi untis) async {
 | 
				
			||||||
 | 
					    String query = '{"id":"ID","method":"$method","params":${untis._body()},"jsonrpc":"2.0"}';
 | 
				
			||||||
 | 
					    log(query);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String sessionId = "0";
 | 
				
			||||||
 | 
					    if(authenticatedResponse) {
 | 
				
			||||||
 | 
					      sessionId = (await Authenticate.getSession()).sessionId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    http.Response data = await post(query, {"Cookie": "JSESSIONID=$sessionId"});
 | 
				
			||||||
 | 
					    response = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dynamic jsonData = jsonDecode(data.body);
 | 
				
			||||||
 | 
					    if(jsonData['error'] != null) {
 | 
				
			||||||
 | 
					      if(jsonData['error']['code'] == -8520) {
 | 
				
			||||||
 | 
					        await Authenticate.createSession();
 | 
				
			||||||
 | 
					        this.query(untis);
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        throw WebuntisError(jsonData['error']['message'], jsonData['error']['code']);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return data.body;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  dynamic finalize(dynamic response) {
 | 
				
			||||||
 | 
					    response.rawResponse = this.response!;
 | 
				
			||||||
 | 
					    return response;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse> run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String _body() {
 | 
				
			||||||
 | 
					    return genericParam == null ? "{}" : jsonEncode(genericParam);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								lib/api/webuntis/webuntisError.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								lib/api/webuntis/webuntisError.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					class WebuntisError {
 | 
				
			||||||
 | 
					  String message;
 | 
				
			||||||
 | 
					  int code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  WebuntisError(this.message, this.code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String toString() {
 | 
				
			||||||
 | 
					    return "WebUntis ($code): $message";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:marianum_mobile/data/incommingPackets/talkNotificationsPacket.dart';
 | 
					import 'package:marianum_mobile/data/incommingPackets/talkNotificationsPacket.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/screen/pages/timetable/testTimetable.dart';
 | 
				
			||||||
import 'package:provider/provider.dart';
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
import 'package:shared_preferences/shared_preferences.dart';
 | 
					import 'package:shared_preferences/shared_preferences.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,7 +43,7 @@ class _AppState extends State<App> {
 | 
				
			|||||||
          PageView(
 | 
					          PageView(
 | 
				
			||||||
            controller: pageController,
 | 
					            controller: pageController,
 | 
				
			||||||
            children: const [
 | 
					            children: const [
 | 
				
			||||||
              Timetable(),
 | 
					              TestTimeTable(),
 | 
				
			||||||
              Talk(),
 | 
					              Talk(),
 | 
				
			||||||
              Files(),
 | 
					              Files(),
 | 
				
			||||||
              Overhang(),
 | 
					              Overhang(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,19 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import 'dart:io';
 | 
					import 'dart:io';
 | 
				
			||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:flutter_login/flutter_login.dart';
 | 
					import 'package:flutter_login/flutter_login.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/apiError.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/webuntisError.dart';
 | 
				
			||||||
import 'package:provider/provider.dart';
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
import 'package:shared_preferences/shared_preferences.dart';
 | 
					import 'package:shared_preferences/shared_preferences.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../api/webuntis/queries/authenticate/authenticateParams.dart';
 | 
				
			||||||
 | 
					import '../../api/webuntis/queries/authenticate/authenticate.dart';
 | 
				
			||||||
import '../../data/accountModel.dart';
 | 
					import '../../data/accountModel.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Login extends StatefulWidget {
 | 
					class Login extends StatefulWidget {
 | 
				
			||||||
  const Login({Key? key}) : super(key: key);
 | 
					  const Login({Key? key}) : super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -15,32 +22,75 @@ class Login extends StatefulWidget {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _LoginState extends State<Login> {
 | 
					class _LoginState extends State<Login> {
 | 
				
			||||||
  Duration get loginTime => const Duration(milliseconds: 2250);
 | 
					  bool displayDisclaimerText = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final Future<SharedPreferences> _storage = SharedPreferences.getInstance();
 | 
					  String? _checkInput(value){
 | 
				
			||||||
 | 
					    return (value ?? "").length == 0 ? "Eingabe erforderlich" : null;
 | 
				
			||||||
  String? checkInput(value){
 | 
					 | 
				
			||||||
    return (value ?? "").length < 5 ? "Eingabe zu kurz" : null;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<String?> _login(LoginData data) async {
 | 
				
			||||||
 | 
					    SharedPreferences preferences = await SharedPreferences.getInstance();
 | 
				
			||||||
 | 
					    preferences.setBool("loggedIn", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await Authenticate(
 | 
				
			||||||
 | 
					        AuthenticateParams(
 | 
				
			||||||
 | 
					          user: data.name,
 | 
				
			||||||
 | 
					          password: data.password,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					      ).run().then((value) => {
 | 
				
			||||||
 | 
					        log(value.sessionId)
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    } on WebuntisError catch(e) {
 | 
				
			||||||
 | 
					      return e.toString();
 | 
				
			||||||
 | 
					    } on ApiError catch(e) {
 | 
				
			||||||
 | 
					      return e.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      displayDisclaimerText = false;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    preferences.setBool("loggedIn", true);
 | 
				
			||||||
 | 
					    preferences.setString("username", data.name);
 | 
				
			||||||
 | 
					    preferences.setString("password", data.password);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<String> _resetPassword(String name) {
 | 
				
			||||||
 | 
					    return Future.delayed(Duration.zero).then((_) {
 | 
				
			||||||
 | 
					      return "Diese Funktion steht nicht zur Verfügung!";
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return FlutterLogin(
 | 
					    return FlutterLogin(
 | 
				
			||||||
      logo: Image.file(File("assets/logo/icon.png")).image,
 | 
					      logo: Image.file(File("assets/logo/icon.png")).image,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      userValidator: checkInput,
 | 
					      userValidator: _checkInput,
 | 
				
			||||||
      passwordValidator: checkInput,
 | 
					      passwordValidator: _checkInput,
 | 
				
			||||||
 | 
					      onSubmitAnimationCompleted: () => Provider.of<AccountModel>(context, listen: false).login(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      onLogin: _authUser,
 | 
					      savedEmail: "test",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      onLogin: _login,
 | 
				
			||||||
      onSignup: null,
 | 
					      onSignup: null,
 | 
				
			||||||
      onRecoverPassword: _recoverPassword,
 | 
					
 | 
				
			||||||
 | 
					      onRecoverPassword: _resetPassword,
 | 
				
			||||||
 | 
					      hideForgotPasswordButton: true,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      theme: LoginTheme(
 | 
					      theme: LoginTheme(
 | 
				
			||||||
        primaryColor: Theme.of(context).primaryColor,
 | 
					        primaryColor: Theme.of(context).primaryColor,
 | 
				
			||||||
 | 
					        accentColor: Colors.white,
 | 
				
			||||||
 | 
					        errorColor: Theme.of(context).primaryColor,
 | 
				
			||||||
 | 
					        footerBottomPadding: 10,
 | 
				
			||||||
 | 
					        textFieldStyle: const TextStyle(
 | 
				
			||||||
 | 
					          fontWeight: FontWeight.w500
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
        cardTheme: const CardTheme(
 | 
					        cardTheme: const CardTheme(
 | 
				
			||||||
          elevation: 10,
 | 
					          elevation: 10,
 | 
				
			||||||
          shape: InputBorder.none,
 | 
					 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,42 +102,23 @@ class _LoginState extends State<Login> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      disableCustomPageTransformer: true,
 | 
					      disableCustomPageTransformer: true,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      headerWidget: const Padding(
 | 
					      headerWidget: Padding(
 | 
				
			||||||
        padding: EdgeInsets.only(bottom: 10),
 | 
					        padding: const EdgeInsets.only(bottom: 30),
 | 
				
			||||||
        child: Center(
 | 
					        child: Center(
 | 
				
			||||||
          child: Text(
 | 
					          child: Visibility(
 | 
				
			||||||
            "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!",
 | 
					            visible: displayDisclaimerText,
 | 
				
			||||||
 | 
					            child: const Text(
 | 
				
			||||||
 | 
					            "Dies ist ein Inoffizieller Nextclient & Webuntis Client und wird nicht vom Marianum selbst betrieben.\nKeinerlei Gewähr für Vollständigkeit, Richtigkeit und Aktualität!",
 | 
				
			||||||
            textAlign: TextAlign.center,
 | 
					            textAlign: TextAlign.center,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      footer: "Marianum Fulda - Die persönliche Schule!",
 | 
					      footer: "Marianum Fulda - Die persönliche Schule",
 | 
				
			||||||
      title: "Marianum",
 | 
					      title: "Marianum Fulda",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      hideForgotPasswordButton: true,
 | 
					 | 
				
			||||||
      userType: LoginUserType.name,
 | 
					      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!";
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										145
									
								
								lib/screen/pages/timetable/testTimetable.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								lib/screen/pages/timetable/testTimetable.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,145 @@
 | 
				
			|||||||
 | 
					import 'dart:developer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:flutter/cupertino.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:jiffy/jiffy.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/api/webuntis/queries/getRooms/getRooms.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/data/incommingPackets/timetablePacket.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/widget/loadingSpinner.dart';
 | 
				
			||||||
 | 
					import 'package:marianum_mobile/widget/offlineError.dart';
 | 
				
			||||||
 | 
					import 'package:timetable_view/timetable_view.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../api/webuntis/queries/getTimetable/getTimetableParams.dart';
 | 
				
			||||||
 | 
					import '../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
 | 
				
			||||||
 | 
					import '../../../api/webuntis/queries/getTimetable/getTimetable.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestTimeTable extends StatefulWidget {
 | 
				
			||||||
 | 
						const TestTimeTable({Key? key}) : super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						State<TestTimeTable> createState() => _TestTimeTableState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _TestTimeTableState extends State<TestTimeTable> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						late Future<GetTimetableResponse> data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						void initState() {
 | 
				
			||||||
 | 
							data = GetTimetable(
 | 
				
			||||||
 | 
									GetTimetableParams(
 | 
				
			||||||
 | 
											options: GetTimetableParamsOptions(
 | 
				
			||||||
 | 
													element: GetTimetableParamsOptionsElement(
 | 
				
			||||||
 | 
														id: 92,
 | 
				
			||||||
 | 
														type: 5,
 | 
				
			||||||
 | 
														keyType: GetTimetableParamsOptionsElementKeyType.id,
 | 
				
			||||||
 | 
													),
 | 
				
			||||||
 | 
													startDate: 20230206,
 | 
				
			||||||
 | 
													endDate: 20230212,
 | 
				
			||||||
 | 
											)
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
							).run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							GetRooms().run().then((value) => {
 | 
				
			||||||
 | 
								log(value.rawResponse.body)
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							super.initState();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						Widget build(BuildContext context) {
 | 
				
			||||||
 | 
							return FutureBuilder(
 | 
				
			||||||
 | 
								builder: (BuildContext context, AsyncSnapshot<GetTimetableResponse> snapshot) {
 | 
				
			||||||
 | 
									if(snapshot.hasData) {
 | 
				
			||||||
 | 
										return Center(
 | 
				
			||||||
 | 
											child: TimetableView(
 | 
				
			||||||
 | 
												laneEventsList: _buildLaneEvents(snapshot.data!),
 | 
				
			||||||
 | 
												onEventTap: (TableEvent event) {},
 | 
				
			||||||
 | 
												timetableStyle: CustomTableStyle(context),
 | 
				
			||||||
 | 
												onEmptySlotTap: (int laneIndex, TableEventTime start, TableEventTime end) => {},
 | 
				
			||||||
 | 
											),
 | 
				
			||||||
 | 
										);
 | 
				
			||||||
 | 
									} else if(snapshot.hasError) {
 | 
				
			||||||
 | 
										return const OfflineBanner(text: "Der Stundenplan konnte nicht geladen werden!");
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										return const Center(
 | 
				
			||||||
 | 
											child: CircularProgressIndicator(),
 | 
				
			||||||
 | 
										);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								future: data,
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						List<LaneEvents> _buildLaneEvents(GetTimetableResponse data) {
 | 
				
			||||||
 | 
							List<LaneEvents> laneEvents = List<LaneEvents>.empty(growable: true);
 | 
				
			||||||
 | 
							Jiffy.locale("de");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							List<int> dayList = data.result.map((e) => e.date).toSet().toList();
 | 
				
			||||||
 | 
							dayList.sort((a, b) => a-b);
 | 
				
			||||||
 | 
							dayList.forEach((day) {
 | 
				
			||||||
 | 
								//Every Day
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								laneEvents.add(
 | 
				
			||||||
 | 
									LaneEvents(
 | 
				
			||||||
 | 
										lane: Lane(
 | 
				
			||||||
 | 
											laneIndex: day,
 | 
				
			||||||
 | 
											name: "${Jiffy(day.toString()).format("dd.MM.yy")}\n${Jiffy(day.toString()).format("EEEE")}",
 | 
				
			||||||
 | 
											textStyle: TextStyle(
 | 
				
			||||||
 | 
												color: Theme.of(context).primaryColor,
 | 
				
			||||||
 | 
												fontWeight: FontWeight.bold,
 | 
				
			||||||
 | 
												fontSize: 14
 | 
				
			||||||
 | 
											)
 | 
				
			||||||
 | 
										),
 | 
				
			||||||
 | 
										events: List<TableEvent>.generate(
 | 
				
			||||||
 | 
											data.result.where((element) => element.date == day).length,
 | 
				
			||||||
 | 
											(index) {
 | 
				
			||||||
 | 
												GetTimetableResponseObject tableEvent = data.result.where((element) => element.date == day).elementAt(index);
 | 
				
			||||||
 | 
												return TableEvent(
 | 
				
			||||||
 | 
													title: "${tableEvent.substText}",
 | 
				
			||||||
 | 
													eventId: tableEvent.id,
 | 
				
			||||||
 | 
													laneIndex: day,
 | 
				
			||||||
 | 
													startTime: parseTime(tableEvent.startTime),
 | 
				
			||||||
 | 
													endTime: parseTime(tableEvent.endTime),
 | 
				
			||||||
 | 
													padding: const EdgeInsets.all(5),
 | 
				
			||||||
 | 
													backgroundColor: Theme.of(context).primaryColor,
 | 
				
			||||||
 | 
													location: "\n${tableEvent.statflags}",
 | 
				
			||||||
 | 
												);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										)
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return laneEvents;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TableEventTime parseTime(int input) {
 | 
				
			||||||
 | 
							String time = input.toString().length < 4 ? "0$input" : input.toString();
 | 
				
			||||||
 | 
							return TableEventTime(hour: int.parse(time.substring(0, 2)), minute: int.parse(time.substring(2, 4)));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CustomTableStyle extends TimetableStyle {
 | 
				
			||||||
 | 
						dynamic context;
 | 
				
			||||||
 | 
						CustomTableStyle(this.context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						int get startHour => 07;
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						int get endHour => 17;
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						double get laneWidth => 100;
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						Color get cornerColor => Theme.of(context).primaryColor;
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						Color get timeItemTextColor => Theme.of(context).primaryColor;
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						double get timeItemHeight => 60;
 | 
				
			||||||
 | 
						@override
 | 
				
			||||||
 | 
						double get timeItemWidth => 40;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								lib/widget/offlineError.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								lib/widget/offlineError.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					import 'package:flutter/cupertino.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class OfflineBanner extends StatelessWidget {
 | 
				
			||||||
 | 
					  final IconData icon;
 | 
				
			||||||
 | 
					  final String text;
 | 
				
			||||||
 | 
					  const OfflineBanner({Key? key, this.icon = Icons.report_gmailerrorred, this.text = "Es ist ein Fehler aufgetreten!"}) : super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Center(
 | 
				
			||||||
 | 
					      child: Container(
 | 
				
			||||||
 | 
					        margin: const EdgeInsets.only(top: 100, left: 20, right: 20),
 | 
				
			||||||
 | 
					        child: Column(
 | 
				
			||||||
 | 
					          children: [
 | 
				
			||||||
 | 
					            Container(
 | 
				
			||||||
 | 
					              margin: const EdgeInsets.all(30),
 | 
				
			||||||
 | 
					              child: Icon(icon, color: Colors.grey, size: 60),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            Text(text,
 | 
				
			||||||
 | 
					              style: const TextStyle(
 | 
				
			||||||
 | 
					                fontSize: 20,
 | 
				
			||||||
 | 
					                color: Colors.grey,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              textAlign: TextAlign.center,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -46,10 +46,13 @@ dependencies:
 | 
				
			|||||||
  web_socket_channel: ^2.2.0
 | 
					  web_socket_channel: ^2.2.0
 | 
				
			||||||
  jiffy: ^5.0.0
 | 
					  jiffy: ^5.0.0
 | 
				
			||||||
  timetable_view: ^0.3.0
 | 
					  timetable_view: ^0.3.0
 | 
				
			||||||
 | 
					  json_annotation: ^4.8.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dev_dependencies:
 | 
					dev_dependencies:
 | 
				
			||||||
  flutter_test:
 | 
					  flutter_test:
 | 
				
			||||||
    sdk: flutter
 | 
					    sdk: flutter
 | 
				
			||||||
 | 
					  json_serializable: ^6.6.1
 | 
				
			||||||
 | 
					  build_runner: ^2.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # The "flutter_lints" package below contains a set of recommended lints to
 | 
					  # The "flutter_lints" package below contains a set of recommended lints to
 | 
				
			||||||
  # encourage good coding practices. The lint set provided by the package is
 | 
					  # encourage good coding practices. The lint set provided by the package is
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user