# Conflicts: # .idea/libraries/Dart_Packages.xml # .idea/libraries/Dart_SDK.xml # Sources/dafl_project_flutter/.metadata # Sources/dafl_project_flutter/android/app/build.gradle # Sources/dafl_project_flutter/lib/main.dart # Sources/dafl_project_flutter/lib/views/pages/sign_up/p_sign_up.dart # Sources/dafl_project_flutter/pubspec.lock # Sources/dafl_project_flutter/pubspec.yamlmessagerie_lucas_test
commit
1f1d0f83c2
@ -0,0 +1,444 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Dart Packages" type="DartPackagesLibraryType">
|
||||
<properties>
|
||||
<option name="packageNameToDirsMap">
|
||||
<entry key="animations">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/animations-2.0.7/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="archive">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="args">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="async">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="boolean_selector">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="characters">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="checked_yaml">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="cli_util">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/cli_util-0.3.5/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="clock">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="collection">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="crypto">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="csslib">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/csslib-0.17.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="cupertino_icons">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="fake_async">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/packages/flutter/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter_inappwebview">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.7.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter_launcher_icons">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_launcher_icons-0.10.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter_lints">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter_native_splash">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.11/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter_test">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/packages/flutter_test/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="flutter_web_plugins">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/packages/flutter_web_plugins/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="fluttericon">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/fluttericon-2.0.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="fluttertoast">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-8.1.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="graphs">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/graphs-2.1.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="html">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/html-0.15.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="http">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="http_parser">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="image">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/image-3.2.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="js">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="json_annotation">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.7.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="lints">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="matcher">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="material_color_utilities">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="meta">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="nested">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/nested-1.0.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="page_transition">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/page_transition-2.0.9/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="path">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="petitparser">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-5.0.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="provider">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/provider-6.0.4/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="random_string">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/random_string-2.3.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="rive">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/rive-0.9.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="sky_engine">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/bin/cache/pkg/sky_engine/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="source_span">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="stack_trace">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="stream_channel">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="string_scanner">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="term_glyph">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="test_api">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="typed_data">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="universal_io">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/universal_io-2.0.4/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="vector_math">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="vibration">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/vibration-1.7.6/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="xml">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="yaml">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</option>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/animations-2.0.7/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/cli_util-0.3.5/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/csslib-0.17.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.7.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_launcher_icons-0.10.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.11/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/fluttericon-2.0.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-8.1.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/graphs-2.1.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/html-0.15.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/image-3.2.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.7.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/nested-1.0.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/page_transition-2.0.9/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-5.0.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/provider-6.0.4/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/random_string-2.3.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/rive-0.9.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/universal_io-2.0.4/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/vibration-1.7.6/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/bin/cache/pkg/sky_engine/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/packages/flutter/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/packages/flutter_test/lib" />
|
||||
<root url="file://$PROJECT_DIR$/../../../../flutter/packages/flutter_web_plugins/lib" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
@ -0,0 +1,156 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:crypto/crypto.dart';
|
||||
|
||||
import 'track.dart';
|
||||
|
||||
class Api {
|
||||
//from dashboard
|
||||
final _clientId = '7ceb49d874b9404492246027e4d68cf8';
|
||||
final _clientSecret = '98f9cb960bf54ebbb9ad306e7ff919cb';
|
||||
|
||||
//for web api
|
||||
get redirectUri => 'https://daflmusic.000webhostapp.com/callback/';
|
||||
final _scopes = 'user-read-playback-state user-read-currently-playing';
|
||||
late String _state;
|
||||
dynamic _codeVerifier;
|
||||
dynamic _codeChallenge;
|
||||
late String _encodedLogs;
|
||||
final _tokenType = 'Bearer ';
|
||||
|
||||
//from web api
|
||||
String? _code;
|
||||
int? _expiresIn;
|
||||
String? _refreshToken;
|
||||
String? _accessToken; //use _getToken() as kind of a private getter
|
||||
|
||||
//other
|
||||
final _client = http.Client();
|
||||
late Uri _urlAuthorize;
|
||||
|
||||
get urlAuthorize => _urlAuthorize;
|
||||
DateTime? _tokenEnd;
|
||||
|
||||
Api() {
|
||||
_state = _generateRandomString(16);
|
||||
_codeVerifier = _generateRandomString(_generateRandomInt(43, 128));
|
||||
_codeChallenge = _generateCodeChallenge();
|
||||
print(_codeChallenge);
|
||||
_encodedLogs = base64.encode(utf8.encode("$_clientId:$_clientSecret"));
|
||||
_urlAuthorize = Uri.https('accounts.spotify.com', 'authorize', {
|
||||
'client_id': _clientId,
|
||||
'response_type': 'code',
|
||||
'redirect_uri': redirectUri,
|
||||
'state': _state,
|
||||
'scope': _scopes,
|
||||
'show_dialog': 'false',
|
||||
'code_challenge_method': 'S256',
|
||||
'code_challenge': _codeChallenge
|
||||
});
|
||||
}
|
||||
|
||||
//PKCE generations
|
||||
|
||||
_generateRandomInt(int min, int max) {
|
||||
return min + Random().nextInt(max - min);
|
||||
}
|
||||
|
||||
_generateRandomString(int length) {
|
||||
const chars =
|
||||
'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
|
||||
return String.fromCharCodes(Iterable.generate(
|
||||
length, (_) => chars.codeUnitAt(Random().nextInt(chars.length))));
|
||||
}
|
||||
|
||||
_generateCodeChallenge() {
|
||||
//care : base64Url doesn't work
|
||||
return base64Encode(sha256.convert(utf8.encode(_codeVerifier)).bytes)
|
||||
.replaceAll('+', '-')
|
||||
.replaceAll('/', '_')
|
||||
.replaceAll('=', '');
|
||||
}
|
||||
|
||||
//session management
|
||||
|
||||
requestUserAuthorization(Uri url) async {
|
||||
if (url.queryParameters['state'] == _state.toString()) {
|
||||
_code = url.queryParameters['code'];
|
||||
await _requestAccessToken();
|
||||
}
|
||||
// TODO : implement the else
|
||||
}
|
||||
|
||||
_requestAccessToken() async {
|
||||
var urlToken = Uri.https('accounts.spotify.com', 'api/token', {
|
||||
'code': _code,
|
||||
'redirect_uri': redirectUri,
|
||||
'grant_type': 'authorization_code',
|
||||
'client_id': _clientId,
|
||||
'code_verifier': _codeVerifier
|
||||
});
|
||||
var response = await _client.post(urlToken, headers: <String, String>{
|
||||
'Authorization': 'Basic $_encodedLogs',
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
});
|
||||
var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map;
|
||||
_accessToken = decodedResponse['access_token'];
|
||||
_expiresIn = decodedResponse['expires_in'];
|
||||
_tokenEnd = DateTime.now().add(Duration(seconds: _expiresIn!));
|
||||
_refreshToken = decodedResponse['refresh_token'];
|
||||
}
|
||||
|
||||
Future<String?> _getToken() async {
|
||||
await _tokenValidity();
|
||||
return _accessToken;
|
||||
}
|
||||
|
||||
_tokenValidity() async {
|
||||
if (DateTime.now().isAfter(_tokenEnd!)) {
|
||||
await _getRefreshedAccessToken();
|
||||
}
|
||||
}
|
||||
|
||||
_getRefreshedAccessToken() async {
|
||||
var urlToken = Uri.https('accounts.spotify.com', 'api/token', {
|
||||
'grant_type': 'refresh_token',
|
||||
'refresh_token': _refreshToken,
|
||||
'client_id': _clientId
|
||||
});
|
||||
var response = await _client.post(urlToken, headers: <String, String>{
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
});
|
||||
var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map;
|
||||
_accessToken = decodedResponse['access_token'];
|
||||
_expiresIn = decodedResponse['expires_in'];
|
||||
_tokenEnd = DateTime.now().add(Duration(seconds: _expiresIn!));
|
||||
}
|
||||
|
||||
//functional methods
|
||||
|
||||
Future<String> getCurrentlyPlayingTrack() async {
|
||||
var url = Uri.https('api.spotify.com', 'v1/me/player/currently-playing');
|
||||
var token = await _getToken();
|
||||
var response = await _client.get(url, headers: <String, String>{
|
||||
'Authorization': '$_tokenType $token',
|
||||
'Content-Type': 'application/json'
|
||||
});
|
||||
var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map;
|
||||
return decodedResponse['item']['id'];
|
||||
}
|
||||
|
||||
Future<Track> getTrackInfo(String id) async {
|
||||
var url = Uri.https('api.spotify.com', 'v1/tracks/$id');
|
||||
var token = await _getToken();
|
||||
var response = await _client.get(url, headers: <String, String>{
|
||||
'Authorization': '$_tokenType $token',
|
||||
'Content-Type': 'application/json'
|
||||
});
|
||||
var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map;
|
||||
return Track(
|
||||
decodedResponse['artists'][0]['name'],
|
||||
decodedResponse['name'],
|
||||
decodedResponse['album']['images']
|
||||
[decodedResponse['album']['images'].length - 1]['url']);
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
import 'dart:io';
|
||||
import 'package:dafl_project_flutter/main.dart';
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
|
||||
import 'track.dart';
|
||||
|
||||
class MyInAppBrowser extends InAppBrowser {
|
||||
var options = InAppBrowserClassOptions(
|
||||
crossPlatform:
|
||||
InAppBrowserOptions(hideUrlBar: true, hideToolbarTop: true),
|
||||
inAppWebViewGroupOptions: InAppWebViewGroupOptions(
|
||||
crossPlatform: InAppWebViewOptions(javaScriptEnabled: true)));
|
||||
|
||||
MyInAppBrowser() {
|
||||
_debugBrowser();
|
||||
openUrlRequest(
|
||||
urlRequest: URLRequest(url: MyApp.api.urlAuthorize), options: options);
|
||||
}
|
||||
|
||||
_debugBrowser() async {
|
||||
if (Platform.isAndroid) {
|
||||
await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future onLoadStart(url) async {
|
||||
if (url!.origin + url.path == MyApp.api.redirectUri) {
|
||||
await MyApp.api.requestUserAuthorization(url);
|
||||
/*String id = await MyApp.api.getCurrentlyPlayingTrack();
|
||||
Track track = await MyApp.api.getTrackInfo(id);
|
||||
print('${track.artist} ${track.name} ${track.albumImage}');*/
|
||||
close();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
class Track {
|
||||
final String _artist;
|
||||
final String _name;
|
||||
final String _albumImage;
|
||||
|
||||
Track(this._artist, this._name, this._albumImage);
|
||||
|
||||
String get artist => _artist;
|
||||
String get name => _name;
|
||||
String get albumImage => _albumImage;
|
||||
}
|
Loading…
Reference in new issue