diff --git a/analysis_options.yaml b/analysis_options.yaml index 613a7f7..61b6c4d 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -22,187 +22,8 @@ linter: # `// ignore_for_file: name_of_lint` syntax on the line or in the file # producing the lint. rules: - always_use_package_imports: true - avoid_dynamic_calls: true - avoid_empty_else: true - avoid_print: true - avoid_relative_lib_imports: true - avoid_returning_null_for_future: true - avoid_slow_async_io: true - avoid_type_to_string: true - avoid_types_as_parameter_names: true - avoid_web_libraries_in_flutter: true - cancel_subscriptions: true - close_sinks: true - comment_references: false - control_flow_in_finally: true - diagnostic_describe_all_properties: false - empty_statements: true - hash_and_equals: true - invariant_booleans: true - iterable_contains_unrelated_type: true - list_remove_unrelated_type: true - literal_only_boolean_expressions: true - no_adjacent_strings_in_list: true - no_duplicate_case_values: true - no_logic_in_create_state: true - prefer_void_to_null: true - test_types_in_equals: true - throw_in_finally: true - unnecessary_statements: true - unrelated_type_equality_checks: true - use_build_context_synchronously: true - use_key_in_widget_constructors: true - valid_regexps: true - always_declare_return_types: true - always_put_control_body_on_new_line: true - always_put_required_named_parameters_first: true - always_require_non_null_named_parameters: true - always_specify_types: false - annotate_overrides: true - avoid_annotating_with_dynamic: false - avoid_bool_literals_in_conditional_expressions: true - avoid_catches_without_on_clauses: false - avoid_catching_errors: false - avoid_classes_with_only_static_members: true - avoid_double_and_int_checks: true - avoid_equals_and_hash_code_on_mutable_classes: false - avoid_escaping_inner_quotes: false - avoid_field_initializers_in_const_classes: true - avoid_function_literals_in_foreach_calls: true - avoid_implementing_value_types: true - avoid_init_to_null: true - avoid_multiple_declarations_per_line: true - avoid_null_checks_in_equality_operators: true - avoid_private_typedef_functions: true - avoid_renaming_method_parameters: true - avoid_return_types_on_setters: true - avoid_returning_null: true - avoid_returning_null_for_void: true - avoid_returning_this: true - avoid_shadowing_type_parameters: true - avoid_single_cascade_in_expression_statements: true - avoid_types_on_closure_parameters: false - avoid_unnecessary_containers: false - avoid_unused_constructor_parameters: true - avoid_void_async: true - await_only_futures: true - camel_case_extensions: true - camel_case_types: true - cascade_invocations: true - cast_nullable_to_non_nullable: true - constant_identifier_names: true - curly_braces_in_flow_control_structures: true - deprecated_consistency: true - directives_ordering: true - do_not_use_environment: true - empty_catches: true - empty_constructor_bodies: true - eol_at_end_of_file: true - exhaustive_cases: true - file_names: true - flutter_style_todos: true - implementation_imports: true - join_return_with_assignment: true - leading_newlines_in_multiline_strings: true - library_names: true - library_prefixes: true - library_private_types_in_public_api: true - lines_longer_than_80_chars: true - missing_whitespace_between_adjacent_strings: true - no_default_cases: true - non_constant_identifier_names: true - noop_primitive_operations: true - null_check_on_nullable_type_parameter: true - null_closures: true - omit_local_variable_types: true - one_member_abstracts: true - only_throw_errors: true - overridden_fields: true - package_api_docs: true - package_prefixed_library_names: true - parameter_assignments: true - prefer_adjacent_string_concatenation: true - prefer_asserts_in_initializer_lists: true - prefer_asserts_with_message: true - prefer_collection_literals: true - prefer_conditional_assignment: true - prefer_const_constructors: false - prefer_const_constructors_in_immutables: true - prefer_const_declarations: false - prefer_const_literals_to_create_immutables: false - prefer_constructors_over_static_methods: true - prefer_contains: true - prefer_double_quotes: false - prefer_equal_for_default_values: true - prefer_expression_function_bodies: false - prefer_final_fields: true - prefer_final_in_for_each: false - prefer_final_locals: false - prefer_final_parameters: false - prefer_for_elements_to_map_fromIterable: true - prefer_foreach: true - prefer_function_declarations_over_variables: true - prefer_generic_function_type_aliases: true - prefer_if_elements_to_conditional_expressions: true - prefer_if_null_operators: true - prefer_initializing_formals: true - prefer_inlined_adds: true - prefer_int_literals: false - prefer_interpolation_to_compose_strings: true - prefer_is_empty: true - prefer_is_not_empty: true - prefer_is_not_operator: true - prefer_iterable_whereType: true - prefer_mixin: true - prefer_null_aware_method_calls: true - prefer_null_aware_operators: true - prefer_single_quotes: true - prefer_spread_collections: true - prefer_typing_uninitialized_variables: true - public_member_api_docs: false - recursive_getters: true - require_trailing_commas: true - sized_box_for_whitespace: true - slash_for_doc_comments: true - sort_child_properties_last: true - sort_constructors_first: true - sort_unnamed_constructors_first: true - tighten_type_of_initializing_formals: true - type_annotate_public_apis: true - type_init_formals: true - unawaited_futures: true - unnecessary_await_in_return: true - unnecessary_brace_in_string_interps: true - unnecessary_const: false - unnecessary_constructor_name: true - unnecessary_final: true - unnecessary_getters_setters: true - unnecessary_lambdas: true - unnecessary_new: true - unnecessary_null_aware_assignments: true - unnecessary_null_checks: true - unnecessary_null_in_if_null_operators: true - unnecessary_nullable_for_final_variable_declarations: true - unnecessary_overrides: true - unnecessary_parenthesis: true - unnecessary_raw_strings: true - unnecessary_string_escapes: true - unnecessary_string_interpolations: true - unnecessary_this: true - use_full_hex_values_for_flutter_colors: true - use_function_type_syntax_for_parameters: true - use_if_null_to_convert_nulls_to_bools: true - use_is_even_rather_than_modulo: true - use_late_for_private_fields_and_variables: true - use_named_constants: true - use_raw_strings: false - use_rethrow_when_possible: true - use_setters_to_change_properties: true - use_string_buffers: true - use_test_throws_matchers: true - use_to_and_as_if_applicable: true - void_checks: true + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule # Additional information about this file can be found at # https://dart.dev/guides/language/analysis-options diff --git a/android/src/build.gradle b/android/src/build.gradle deleted file mode 100644 index a8a76a7..0000000 --- a/android/src/build.gradle +++ /dev/null @@ -1,64 +0,0 @@ -group 'io.flutter.plugins.googlemaps' -version '1.0-SNAPSHOT' - -buildscript { - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' - } -} - -rootProject.allprojects { - repositories { - google() - mavenCentral() - } -} - -apply plugin: 'com.android.library' - -android { - compileSdkVersion 29 - - defaultConfig { - minSdkVersion 20 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - lintOptions { - disable 'InvalidPackage' - disable 'GradleDependency' - } - - dependencies { - implementation "androidx.annotation:annotation:1.1.0" - implementation 'com.google.android.gms:play-services-maps:17.0.0' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test:rules:1.2.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' - testImplementation 'junit:junit:4.12' - testImplementation 'org.mockito:mockito-core:3.2.4' - testImplementation 'androidx.test:core:1.2.0' - testImplementation "org.robolectric:robolectric:4.3.1" - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - testOptions { - unitTests.includeAndroidResources = true - unitTests.returnDefaultValues = true - unitTests.all { - testLogging { - events "passed", "skipped", "failed", "standardOut", "standardError" - outputs.upToDateWhen {false} - showStandardStreams = true - } - } - } -} \ No newline at end of file diff --git a/android/src/settings.gradle b/android/src/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/lib/google_track_trace.dart b/lib/google_track_trace.dart index 4423771..6a44405 100644 --- a/lib/google_track_trace.dart +++ b/lib/google_track_trace.dart @@ -4,7 +4,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'dart:math'; -import 'dart:typed_data'; import 'dart:ui' as ui; import 'package:flutter/foundation.dart'; diff --git a/lib/src/directions_repository.dart b/lib/src/directions_repository.dart index b6b6bc8..aaffa2d 100644 --- a/lib/src/directions_repository.dart +++ b/lib/src/directions_repository.dart @@ -6,7 +6,7 @@ class DirectionsRepository { static const String _baseUrl = '/maps/api/directions/json'; /// get the route between the two coordinates - Future getDirections({ + Future getDirections({ required LatLng origin, required LatLng destination, required TravelMode mode, @@ -32,7 +32,11 @@ class DirectionsRepository { }, ); if (response.statusCode == 200) { - return Directions.fromMap(jsonDecode(response.body)); + try { + return Directions.fromMap(jsonDecode(response.body)); + } on GoogleMapsException catch (_) { + return null; + } } } on HttpException catch (e) { debugPrint(e.message); diff --git a/lib/src/google_map.dart b/lib/src/google_map.dart index da125a3..da098b3 100644 --- a/lib/src/google_map.dart +++ b/lib/src/google_map.dart @@ -237,17 +237,20 @@ class _GoogleTrackTraceMapState extends State { key: widget.googleAPIKey, ) .then( - (value) => { - controller.route = TrackTraceRoute( - value.totalDuration, - value.totalDistance, - value.polylinePoints, - ), - checkDestinationCloseBy(), - controller.recenterCamera(), - setState(() { - lastRouteUpdate = DateTime.now(); - }), + (Directions? directions) => { + if (directions != null) + { + controller.route = TrackTraceRoute( + directions.totalDuration, + directions.totalDistance, + directions.polylinePoints, + ), + checkDestinationCloseBy(), + controller.recenterCamera(), + setState(() { + lastRouteUpdate = DateTime.now(); + }), + } }, ); } diff --git a/lib/src/marker_generator.dart b/lib/src/marker_generator.dart index 1004c2d..75df7d6 100644 --- a/lib/src/marker_generator.dart +++ b/lib/src/marker_generator.dart @@ -23,13 +23,13 @@ Future convertBytesToCustomBitmapDescriptor( ..addRRect( RRect.fromRectAndRadius( Rect.fromLTWH(0, 0, size.toDouble(), size.toDouble()), - Radius.circular(100), + const Radius.circular(100), ), ) ..addRRect( RRect.fromRectAndRadius( Rect.fromLTWH(0, size * 8 / 10, size.toDouble(), size * 3 / 10), - Radius.circular(100), + const Radius.circular(100), ), ); canvas.clipPath(clipPath); @@ -67,7 +67,7 @@ Future convertBytesToCustomBitmapDescriptor( canvas.drawRRect( RRect.fromRectAndRadius( Rect.fromLTWH(0, size * 8 / 10, size.toDouble(), size * 3 / 10), - Radius.circular(100), + const Radius.circular(100), ), paint, ); diff --git a/test/google_track_trace_test.dart b/test/google_track_trace_test.dart deleted file mode 100644 index daf983f..0000000 --- a/test/google_track_trace_test.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; - - -void main() { - test('adds one to input values', () { - - }); -}