From c4d3cce26f3e6acb244055ae63bc538351f2cc33 Mon Sep 17 00:00:00 2001 From: Maurits van Beusekom Date: Thu, 10 Jul 2025 18:41:39 +0200 Subject: [PATCH 1/4] Updates the platform interface for improved extendability. - Releases new interface making the Geocoding plugin easier to extend and implement on different platforms. - Moves the old interface into the `legacy` folder. This interface will remain available but will no longer be maintained. To import the old interface use `import 'package:geocoding_platform_interface/legacy/geocoding_platform_interface.dart`. --- geocoding_platform_interface/CHANGELOG.md | 9 + .../lib/geocoding_platform_interface.dart | 6 +- .../legacy/geocoding_platform_interface.dart | 3 + .../lib/{ => legacy}/src/errors/errors.dart | 0 .../src/errors/no_result_found_exception.dart | 0 .../src/geocoding_platform_interface.dart | 24 +- .../lib/{ => legacy}/src/models/location.dart | 16 +- .../lib/{ => legacy}/src/models/models.dart | 0 .../{ => legacy}/src/models/placemark.dart | 24 +- .../lib/src/geocoding.dart | 97 ++++ .../lib/src/geocoding_platform_factory.dart | 44 ++ .../src/types/geocoding_creation_params.dart | 39 ++ .../lib/src/types/location.dart | 35 ++ .../lib/src/types/placemark.dart | 83 +++ .../lib/src/types/types.dart | 5 + geocoding_platform_interface/pubspec.yaml | 9 +- .../geocoding_platform_interface_test.dart | 102 ++-- .../test/legacy/src/models/location_test.dart | 122 +++++ .../legacy/src/models/placemark_test.dart | 465 +++++++++++++++++ .../src/geocoding_platform_factory_test.dart | 71 +++ .../test/src/geocoding_test.dart | 141 +++++ .../test/src/geocoding_test.mocks.dart | 49 ++ .../test/src/models/location_test.dart | 121 ----- .../test/src/models/placemark_test.dart | 484 ------------------ 24 files changed, 1254 insertions(+), 695 deletions(-) create mode 100644 geocoding_platform_interface/lib/legacy/geocoding_platform_interface.dart rename geocoding_platform_interface/lib/{ => legacy}/src/errors/errors.dart (100%) rename geocoding_platform_interface/lib/{ => legacy}/src/errors/no_result_found_exception.dart (100%) rename geocoding_platform_interface/lib/{ => legacy}/src/geocoding_platform_interface.dart (87%) rename geocoding_platform_interface/lib/{ => legacy}/src/models/location.dart (89%) rename geocoding_platform_interface/lib/{ => legacy}/src/models/models.dart (100%) rename geocoding_platform_interface/lib/{ => legacy}/src/models/placemark.dart (91%) create mode 100644 geocoding_platform_interface/lib/src/geocoding.dart create mode 100644 geocoding_platform_interface/lib/src/geocoding_platform_factory.dart create mode 100644 geocoding_platform_interface/lib/src/types/geocoding_creation_params.dart create mode 100644 geocoding_platform_interface/lib/src/types/location.dart create mode 100644 geocoding_platform_interface/lib/src/types/placemark.dart create mode 100644 geocoding_platform_interface/lib/src/types/types.dart rename geocoding_platform_interface/test/{ => legacy}/geocoding_platform_interface_test.dart (53%) create mode 100644 geocoding_platform_interface/test/legacy/src/models/location_test.dart create mode 100644 geocoding_platform_interface/test/legacy/src/models/placemark_test.dart create mode 100644 geocoding_platform_interface/test/src/geocoding_platform_factory_test.dart create mode 100644 geocoding_platform_interface/test/src/geocoding_test.dart create mode 100644 geocoding_platform_interface/test/src/geocoding_test.mocks.dart delete mode 100644 geocoding_platform_interface/test/src/models/location_test.dart delete mode 100644 geocoding_platform_interface/test/src/models/placemark_test.dart diff --git a/geocoding_platform_interface/CHANGELOG.md b/geocoding_platform_interface/CHANGELOG.md index 12d85d3..2614f1e 100644 --- a/geocoding_platform_interface/CHANGELOG.md +++ b/geocoding_platform_interface/CHANGELOG.md @@ -1,3 +1,12 @@ +## 4.0.0 + +- **BREAKING CHANGES:** + - Releases new interface making the Geocoding plugin easier to extend and + implement on different platforms. + - Moves the old interface into the `legacy` folder. This interface will + remain available but will no longer be maintained. To import the old + interface use `import 'package:geocoding_platform_interface/legacy/geocoding_platform_interface.dart`. + ## 3.2.1 - Fixed analysis warnings from `flutter analyse`. diff --git a/geocoding_platform_interface/lib/geocoding_platform_interface.dart b/geocoding_platform_interface/lib/geocoding_platform_interface.dart index 579f469..12b4a95 100644 --- a/geocoding_platform_interface/lib/geocoding_platform_interface.dart +++ b/geocoding_platform_interface/lib/geocoding_platform_interface.dart @@ -1,3 +1,3 @@ -export 'src/errors/errors.dart'; -export 'src/geocoding_platform_interface.dart'; -export 'src/models/models.dart'; +export 'src/geocoding.dart'; +export 'src/geocoding_platform_factory.dart'; +export 'src/types/types.dart'; diff --git a/geocoding_platform_interface/lib/legacy/geocoding_platform_interface.dart b/geocoding_platform_interface/lib/legacy/geocoding_platform_interface.dart new file mode 100644 index 0000000..579f469 --- /dev/null +++ b/geocoding_platform_interface/lib/legacy/geocoding_platform_interface.dart @@ -0,0 +1,3 @@ +export 'src/errors/errors.dart'; +export 'src/geocoding_platform_interface.dart'; +export 'src/models/models.dart'; diff --git a/geocoding_platform_interface/lib/src/errors/errors.dart b/geocoding_platform_interface/lib/legacy/src/errors/errors.dart similarity index 100% rename from geocoding_platform_interface/lib/src/errors/errors.dart rename to geocoding_platform_interface/lib/legacy/src/errors/errors.dart diff --git a/geocoding_platform_interface/lib/src/errors/no_result_found_exception.dart b/geocoding_platform_interface/lib/legacy/src/errors/no_result_found_exception.dart similarity index 100% rename from geocoding_platform_interface/lib/src/errors/no_result_found_exception.dart rename to geocoding_platform_interface/lib/legacy/src/errors/no_result_found_exception.dart diff --git a/geocoding_platform_interface/lib/src/geocoding_platform_interface.dart b/geocoding_platform_interface/lib/legacy/src/geocoding_platform_interface.dart similarity index 87% rename from geocoding_platform_interface/lib/src/geocoding_platform_interface.dart rename to geocoding_platform_interface/lib/legacy/src/geocoding_platform_interface.dart index c046192..9753064 100644 --- a/geocoding_platform_interface/lib/src/geocoding_platform_interface.dart +++ b/geocoding_platform_interface/lib/legacy/src/geocoding_platform_interface.dart @@ -38,11 +38,10 @@ abstract class GeocodingPlatform extends PlatformInterface { /// /// The `localeIdentifier` should be formatted using the syntax: /// [languageCode]_[countryCode] (eg. en_US or nl_NL). - Future setLocaleIdentifier( - String localeIdentifier, - ) { + Future setLocaleIdentifier(String localeIdentifier) { throw UnimplementedError( - 'setLocaleIdentifier() has not been implementated.'); + 'setLocaleIdentifier() has not been implementated.', + ); } /// Returns a list of [Location] instances found for the supplied address. @@ -51,11 +50,10 @@ abstract class GeocodingPlatform extends PlatformInterface { /// However in some situations where the supplied address could not be /// resolved into a single [Location], multiple [Location] instances may be /// returned. - Future> locationFromAddress( - String address, - ) { + Future> locationFromAddress(String address) { throw UnimplementedError( - 'locationFromAddress() has not been implementated.'); + 'locationFromAddress() has not been implementated.', + ); } /// Returns true if there is a geocoder implementation present that may return results. @@ -80,7 +78,8 @@ abstract class GeocodingPlatform extends PlatformInterface { double longitude, ) { throw UnimplementedError( - 'placemarkFromCoordinates() has not been implementated.'); + 'placemarkFromCoordinates() has not been implementated.', + ); } /// Returns a list of [Placemark] instances found for the supplied address. @@ -89,10 +88,9 @@ abstract class GeocodingPlatform extends PlatformInterface { /// However in some situations where the supplied address could not be /// resolved into a single [Placemark], multiple [Placemark] instances may be /// returned. - Future> placemarkFromAddress( - String address, - ) { + Future> placemarkFromAddress(String address) { throw UnimplementedError( - 'placemarkFromAddress() has not been implementated.'); + 'placemarkFromAddress() has not been implementated.', + ); } } diff --git a/geocoding_platform_interface/lib/src/models/location.dart b/geocoding_platform_interface/lib/legacy/src/models/location.dart similarity index 89% rename from geocoding_platform_interface/lib/src/models/location.dart rename to geocoding_platform_interface/lib/legacy/src/models/location.dart index 48dd0d6..5daf5bb 100644 --- a/geocoding_platform_interface/lib/src/models/location.dart +++ b/geocoding_platform_interface/lib/legacy/src/models/location.dart @@ -56,12 +56,14 @@ class Location { final Map locationMap = message; final timestamp = DateTime.fromMillisecondsSinceEpoch( - locationMap['timestamp'].toInt(), - isUtc: true); + locationMap['timestamp'].toInt(), + isUtc: true, + ); if (locationMap['latitude'] == null || locationMap['longitude'] == null) { throw ArgumentError( - 'The parameters latitude and longitude should not be null.'); + 'The parameters latitude and longitude should not be null.', + ); } return Location._( @@ -74,10 +76,10 @@ class Location { /// Converts the [Location] instance into a [Map] instance that can be /// serialized to JSON. Map toJson() => { - 'latitude': latitude, - 'longitude': longitude, - 'timestamp': timestamp.millisecondsSinceEpoch, - }; + 'latitude': latitude, + 'longitude': longitude, + 'timestamp': timestamp.millisecondsSinceEpoch, + }; @override String toString() { diff --git a/geocoding_platform_interface/lib/src/models/models.dart b/geocoding_platform_interface/lib/legacy/src/models/models.dart similarity index 100% rename from geocoding_platform_interface/lib/src/models/models.dart rename to geocoding_platform_interface/lib/legacy/src/models/models.dart diff --git a/geocoding_platform_interface/lib/src/models/placemark.dart b/geocoding_platform_interface/lib/legacy/src/models/placemark.dart similarity index 91% rename from geocoding_platform_interface/lib/src/models/placemark.dart rename to geocoding_platform_interface/lib/legacy/src/models/placemark.dart index e833847..b451a3b 100644 --- a/geocoding_platform_interface/lib/src/models/placemark.dart +++ b/geocoding_platform_interface/lib/legacy/src/models/placemark.dart @@ -132,18 +132,18 @@ class Placemark { /// Converts the [Placemark] instance into a [Map] instance that can be /// serialized to JSON. Map toJson() => { - 'name': name, - 'street': street, - 'isoCountryCode': isoCountryCode, - 'country': country, - 'postalCode': postalCode, - 'administrativeArea': administrativeArea, - 'subAdministrativeArea': subAdministrativeArea, - 'locality': locality, - 'subLocality': subLocality, - 'thoroughfare': thoroughfare, - 'subThoroughfare': subThoroughfare, - }; + 'name': name, + 'street': street, + 'isoCountryCode': isoCountryCode, + 'country': country, + 'postalCode': postalCode, + 'administrativeArea': administrativeArea, + 'subAdministrativeArea': subAdministrativeArea, + 'locality': locality, + 'subLocality': subLocality, + 'thoroughfare': thoroughfare, + 'subThoroughfare': subThoroughfare, + }; @override String toString() { diff --git a/geocoding_platform_interface/lib/src/geocoding.dart b/geocoding_platform_interface/lib/src/geocoding.dart new file mode 100644 index 0000000..6d2e7e7 --- /dev/null +++ b/geocoding_platform_interface/lib/src/geocoding.dart @@ -0,0 +1,97 @@ +import 'package:flutter/widgets.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'geocoding_platform_factory.dart'; +import 'types/types.dart'; + +/// Interface for a platform implementation of a [Geocoding] instance. +/// +/// Platform implementations should extend this class rather than implement it +/// as `geocoding` package does not consider newly added methods to be breaking +/// changes. Extending this class (using `extends`) ensures that the subclass +/// will get the default implementation, while platform implementations that +/// `implements` this interface will be broken by newly added +/// [Geocoding] methods. +abstract class Geocoding extends PlatformInterface { + /// Creates a new [PlatformWebViewController] + factory Geocoding(GeocodingCreationParams params) { + assert( + GeocodingPlatformFactory.instance != null, + 'A platform implementation for `geocoding` has not been set. Please ' + 'ensure that an implementation of `GeocodingPlatformFactory` has been ' + 'set te `GeocodingPlatformFactory.instance` before use. For unit ' + 'testing, `GeocodingPlatformFactory.instance` can be set with your own ' + 'test implementation.', + ); + final Geocoding geocoding = GeocodingPlatformFactory.instance! + .createGeocoding(params); + PlatformInterface.verify(geocoding, _token); + return geocoding; + } + + /// Used by the platform implementation to create a new [Geocoding]. + /// + /// Should only be used by platform implementations because they can't extend + /// a class that only contains a factory constructor. + @protected + Geocoding.implementation(this.params) : super(token: _token); + + static final Object _token = Object(); + + /// The parameters used to initialize the [Geocoding] instance. + final GeocodingCreationParams params; + + /// Returns a list of [Location] instances found for the supplied address. + /// + /// In most situations the returned list should only contain one entry. + /// However in some situations where the supplied address could not be + /// resolved into a single [Location], multiple [Location] instances may be + /// returned. + Future> locationFromAddress(String address, {Locale? locale}) { + throw UnimplementedError( + 'locationFromAddress() has not been implementated.', + ); + } + + /// Returns true if there is a geocoder implementation present that may return results. + /// If true, there is still no guarantee that any individual geocoding attempt will succeed. + /// + /// + /// This method is only implemented on Android, calling this on iOS always + /// returns [true]. + Future isPresent() { + throw UnimplementedError('isPresent() has not been implementated.'); + } + + /// Returns a list of [Placemark] instances found for the supplied + /// coordinates. + /// + /// In most situations the returned list should only contain one entry. + /// However in some situations where the supplied coordinates could not be + /// resolved into a single [Placemark], multiple [Placemark] instances may be + /// returned. + Future> placemarkFromCoordinates( + double latitude, + double longitude, { + Locale? locale, + }) { + throw UnimplementedError( + 'placemarkFromCoordinates() has not been implementated.', + ); + } + + /// Returns a list of [Placemark] instances found for the supplied address. + /// + /// In most situations the returned list should only contain one entry. + /// However in some situations where the supplied address could not be + /// resolved into a single [Placemark], multiple [Placemark] instances may be + /// returned. + Future> placemarkFromAddress( + String address, { + Locale? locale, + }) { + throw UnimplementedError( + 'placemarkFromAddress() has not been implementated.', + ); + } +} diff --git a/geocoding_platform_interface/lib/src/geocoding_platform_factory.dart b/geocoding_platform_interface/lib/src/geocoding_platform_factory.dart new file mode 100644 index 0000000..88c619a --- /dev/null +++ b/geocoding_platform_interface/lib/src/geocoding_platform_factory.dart @@ -0,0 +1,44 @@ +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'geocoding.dart'; +import 'types/types.dart'; + +/// Interface for a platform specific implementation of the geocoding features. +abstract class GeocodingPlatformFactory extends PlatformInterface { + /// Creates a new [GeocodingPlatformFactory]. + GeocodingPlatformFactory() : super(token: _token); + + static final Object _token = Object(); + + static GeocodingPlatformFactory? _instance; + + /// The instance of [GeocodingPlatformFactory] to use. + /// + /// This should return a platform specific instance, which can be used to + /// access geocoding features for that platform. + static GeocodingPlatformFactory? get instance => _instance; + + /// Platform-specific plugins should set this with their own platform-specific + /// class that extends [GeocodingPlatformFactory] when they register + /// themselves. + static set instance(GeocodingPlatformFactory? instance) { + if (instance == null) { + throw AssertionError( + 'Platform interface can only be set to a non-null instance', + ); + } + + PlatformInterface.verify(instance, _token); + _instance = instance; + } + + /// Creates a new [Geocoding]. + /// + /// This function should only be called by the app-facing package. + /// Look at using [Geocoding] in `geocoding` package instead. + Geocoding createGeocoding(GeocodingCreationParams params) { + throw UnimplementedError( + 'createGeocoding is not implemented on the current platform.', + ); + } +} diff --git a/geocoding_platform_interface/lib/src/types/geocoding_creation_params.dart b/geocoding_platform_interface/lib/src/types/geocoding_creation_params.dart new file mode 100644 index 0000000..cf5b544 --- /dev/null +++ b/geocoding_platform_interface/lib/src/types/geocoding_creation_params.dart @@ -0,0 +1,39 @@ +import 'package:meta/meta.dart'; + +/// Object specifying creation parameters for creating a [Geocoding]. +/// +/// Platform specific implementations can add additional fields by extending +/// this class. +/// +/// This example demonstrates how to extend the [GeocodingCreationParams] to +/// provide additional platform specific parameters. +/// +/// When extending [GeocodingCreationParams] additional +/// parameters should always accept `null` or have a default value to prevent +/// breaking changes. +/// +/// ```dart +/// class AndroidGeocodingCreationParams extends GeocodingCreationParams { +/// AndroidGeocodingCreationParams._( +/// // This parameter prevents breaking changes later. +/// // ignore: avoid_unused_constructor_parameters +/// GeocodingCreationParams params, { +/// this.filter, +/// }) : super(); +/// +/// factory AndroidGeocodingCreationParams.fromGeocodingCreationParams( +/// GeocodingCreationParams params, { +/// String? filter, +/// }) { +/// return AndroidGeocodingCreationParams._(params, filter: filter); +/// } +/// +/// final String? filter; +/// } +/// ``` +@immutable +class GeocodingCreationParams { + /// Used by the platform implementation to create a new + /// [GeocodingCreationParams]. + const GeocodingCreationParams(); +} diff --git a/geocoding_platform_interface/lib/src/types/location.dart b/geocoding_platform_interface/lib/src/types/location.dart new file mode 100644 index 0000000..0ff6d0c --- /dev/null +++ b/geocoding_platform_interface/lib/src/types/location.dart @@ -0,0 +1,35 @@ +import 'package:meta/meta.dart'; + +/// Describes a location on earth represented by geographical coordinates.the +/// +/// Platform specific implementations can add additional fields by extending +/// this class. +@immutable +class Location { + /// Creates a [Location]. + const Location({ + required this.latitude, + required this.longitude, + required this.timestamp, + }); + + /// The latitude associated with the placemark. + final double latitude; + + /// The longitude associated with the placemark. + final double longitude; + + /// The UTC timestamp the coordinates have been requested. + final DateTime timestamp; + + @override + bool operator ==(Object other) => + other is Location && + other.latitude == latitude && + other.longitude == longitude && + other.timestamp == timestamp; + + @override + int get hashCode => + latitude.hashCode ^ longitude.hashCode ^ timestamp.hashCode; +} diff --git a/geocoding_platform_interface/lib/src/types/placemark.dart b/geocoding_platform_interface/lib/src/types/placemark.dart new file mode 100644 index 0000000..672cee4 --- /dev/null +++ b/geocoding_platform_interface/lib/src/types/placemark.dart @@ -0,0 +1,83 @@ +import 'package:meta/meta.dart'; + +/// Defines the parameters that describe a result of the (reserve)geocoding +/// action. +@immutable +class Placemark { + /// Creates a [Placemark]. + const Placemark({ + this.name, + this.street, + this.isoCountryCode, + this.country, + this.postalCode, + this.administrativeArea, + this.subAdministrativeArea, + this.locality, + this.subLocality, + this.thoroughfare, + this.subThoroughfare, + }); + + /// The name associated with the placemark. + final String? name; + + /// The street associated with the placemark. + final String? street; + + /// The abbreviated country name, according to the two letter (alpha-2) [ISO standard](https://www.iso.org/iso-3166-country-codes.html). + final String? isoCountryCode; + + /// The name of the country associated with the placemark. + final String? country; + + /// The postal code associated with the placemark. + final String? postalCode; + + /// The name of the state or province associated with the placemark. + final String? administrativeArea; + + /// Additional administrative area information for the placemark. + final String? subAdministrativeArea; + + /// The name of the city associated with the placemark. + final String? locality; + + /// Additional city-level information for the placemark. + final String? subLocality; + + /// The street address associated with the placemark. + final String? thoroughfare; + + /// Additional street address information for the placemark. + final String? subThoroughfare; + + @override + bool operator ==(Object other) => + other is Placemark && + other.administrativeArea == administrativeArea && + other.country == country && + other.isoCountryCode == isoCountryCode && + other.locality == locality && + other.name == name && + other.postalCode == postalCode && + other.street == street && + other.subAdministrativeArea == subAdministrativeArea && + other.subLocality == subLocality && + other.subThoroughfare == subThoroughfare && + other.thoroughfare == thoroughfare; + + @override + int get hashCode => + administrativeArea.hashCode ^ + country.hashCode ^ + isoCountryCode.hashCode ^ + locality.hashCode ^ + name.hashCode ^ + postalCode.hashCode ^ + street.hashCode ^ + subAdministrativeArea.hashCode ^ + subLocality.hashCode ^ + subThoroughfare.hashCode ^ + thoroughfare.hashCode; +} diff --git a/geocoding_platform_interface/lib/src/types/types.dart b/geocoding_platform_interface/lib/src/types/types.dart new file mode 100644 index 0000000..15bc468 --- /dev/null +++ b/geocoding_platform_interface/lib/src/types/types.dart @@ -0,0 +1,5 @@ +// A barrel file exporting all publicly available types. + +export 'geocoding_creation_params.dart'; +export 'location.dart'; +export 'placemark.dart'; diff --git a/geocoding_platform_interface/pubspec.yaml b/geocoding_platform_interface/pubspec.yaml index 0805f12..1e8e5bd 100644 --- a/geocoding_platform_interface/pubspec.yaml +++ b/geocoding_platform_interface/pubspec.yaml @@ -3,11 +3,11 @@ description: A common platform interface for the geocoding plugin. homepage: https://github.com/baseflow/flutter-geocoding/tree/main/geocoding_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 3.2.1 +version: 4.0.0 environment: - sdk: ">=3.3.0 <4.0.0" - flutter: ">=3.0.0" + sdk: ^3.8.1 + flutter: ">=3.7.0" dependencies: flutter: @@ -20,6 +20,7 @@ dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 mockito: ^5.0.0 + build_runner: ^2.5.4 diff --git a/geocoding_platform_interface/test/geocoding_platform_interface_test.dart b/geocoding_platform_interface/test/legacy/geocoding_platform_interface_test.dart similarity index 53% rename from geocoding_platform_interface/test/geocoding_platform_interface_test.dart rename to geocoding_platform_interface/test/legacy/geocoding_platform_interface_test.dart index ce0df16..a90dd0a 100644 --- a/geocoding_platform_interface/test/geocoding_platform_interface_test.dart +++ b/geocoding_platform_interface/test/legacy/geocoding_platform_interface_test.dart @@ -3,7 +3,7 @@ // found in the LICENSE file. import 'package:flutter_test/flutter_test.dart'; -import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; +import 'package:geocoding_platform_interface/legacy/geocoding_platform_interface.dart'; import 'package:mockito/mockito.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; @@ -38,60 +38,61 @@ void main() { }); test( - // ignore: lines_longer_than_80_chars - 'Default implementation of locationFromAddress should throw unimplemented error', - () { - // Arrange - final geocodingPlatform = ExtendsGeocodingPlatform(); - - // Act & Assert - expect( - () => geocodingPlatform.locationFromAddress('address'), - throwsUnimplementedError, - ); - }); + // ignore: lines_longer_than_80_chars + 'Default implementation of locationFromAddress should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocodingPlatform(); + + // Act & Assert + expect( + () => geocodingPlatform.locationFromAddress('address'), + throwsUnimplementedError, + ); + }, + ); test( - // ignore: lines_longer_than_80_chars - 'Default implementation of isPresent should throw unimplemented error', - () { - // Arrange - final geocodingPlatform = ExtendsGeocodingPlatform(); - - // Act & Assert - expect( - () => geocodingPlatform.isPresent(), - throwsUnimplementedError, - ); - }); + // ignore: lines_longer_than_80_chars + 'Default implementation of isPresent should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocodingPlatform(); + + // Act & Assert + expect(() => geocodingPlatform.isPresent(), throwsUnimplementedError); + }, + ); test( - // ignore: lines_longer_than_80_chars - 'Default implementation of placemarkFromCoordinates should throw unimplemented error', - () { - // Arrange - final geocodingPlatform = ExtendsGeocodingPlatform(); - - // Act & Assert - expect( - () => geocodingPlatform.placemarkFromCoordinates(0, 0), - throwsUnimplementedError, - ); - }); + // ignore: lines_longer_than_80_chars + 'Default implementation of placemarkFromCoordinates should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocodingPlatform(); + + // Act & Assert + expect( + () => geocodingPlatform.placemarkFromCoordinates(0, 0), + throwsUnimplementedError, + ); + }, + ); test( - // ignore: lines_longer_than_80_chars - 'Default implementation of setLocale should throw unimplemented error', - () { - // Arrange - final geocodingPlatform = ExtendsGeocodingPlatform(); - - // Act & Assert - expect( - () => geocodingPlatform.setLocaleIdentifier('en_US'), - throwsUnimplementedError, - ); - }); + // ignore: lines_longer_than_80_chars + 'Default implementation of setLocale should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocodingPlatform(); + + // Act & Assert + expect( + () => geocodingPlatform.setLocaleIdentifier('en_US'), + throwsUnimplementedError, + ); + }, + ); }); } @@ -104,7 +105,6 @@ class MockGeocodingPlatform extends Mock with // ignore: prefer_mixin MockPlatformInterfaceMixin - implements - GeocodingPlatform {} + implements GeocodingPlatform {} class ExtendsGeocodingPlatform extends GeocodingPlatform {} diff --git a/geocoding_platform_interface/test/legacy/src/models/location_test.dart b/geocoding_platform_interface/test/legacy/src/models/location_test.dart new file mode 100644 index 0000000..60ef96b --- /dev/null +++ b/geocoding_platform_interface/test/legacy/src/models/location_test.dart @@ -0,0 +1,122 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:geocoding_platform_interface/legacy/geocoding_platform_interface.dart'; + +void main() { + group('hashCode tests:', () { + test( + 'hashCode hould be the same for two instances with the same values', + () { + // Arrange + final firstLocation = Location( + latitude: 0, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch((0)), + ); + final secondLocation = Location( + latitude: 0, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch((0)), + ); + + // Act & Assert + expect(firstLocation.hashCode, secondLocation.hashCode); + }, + ); + + test( + 'hashCode should not match when the latitude property is different', + () { + // Arrange + final firstLocation = Location( + latitude: 0, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch(0), + ); + final secondLocation = Location( + latitude: 1, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch(0), + ); + + // Act & Assert + expect(firstLocation.hashCode != secondLocation.hashCode, true); + }, + ); + + test( + 'hashCode should not match when the longitude property is different', + () { + // Arrange + final firstLocation = Location( + latitude: 0, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch(0), + ); + final secondLocation = Location( + latitude: 0, + longitude: 1, + timestamp: DateTime.fromMillisecondsSinceEpoch(0), + ); + + // Act & Assert + expect(firstLocation.hashCode != secondLocation.hashCode, true); + }, + ); + + test( + 'hashCode should not match when the timestamp property is different', + () { + // Arrange + final firstLocation = Location( + latitude: 0, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch(0), + ); + final secondLocation = Location( + latitude: 0, + longitude: 0, + timestamp: DateTime.fromMillisecondsSinceEpoch(1), + ); + + // Act & Assert + expect(firstLocation.hashCode != secondLocation.hashCode, true); + }, + ); + }); + + group('fromMap tests:', () { + test('fromMap should throw argument error when message is null', () { + expect(() => Location.fromMap(null), throwsArgumentError); + }); + + test( + 'fromMap throws argument error when latitude or longitude are null', + () { + final location = { + 'latitude': null, + 'longitude': null, + 'timestamp': 1615216821218, + }; + expect(() => Location.fromMap(location), throwsArgumentError); + }, + ); + }); + + group('toString tests:', () { + test('toString should list the contents of all properties', () { + final mockLocation = Location( + latitude: 52.2165157, + longitude: 6.9437819, + timestamp: DateTime.fromMillisecondsSinceEpoch(0).toUtc(), + ); + + final expected = + ''' + Latitude: ${mockLocation.latitude}, + Longitude: ${mockLocation.longitude}, + Timestamp: ${mockLocation.timestamp}'''; + + expect(mockLocation.toString(), expected); + }); + }); +} diff --git a/geocoding_platform_interface/test/legacy/src/models/placemark_test.dart b/geocoding_platform_interface/test/legacy/src/models/placemark_test.dart new file mode 100644 index 0000000..5d331b2 --- /dev/null +++ b/geocoding_platform_interface/test/legacy/src/models/placemark_test.dart @@ -0,0 +1,465 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:geocoding_platform_interface/legacy/geocoding_platform_interface.dart'; + +void main() { + group('hashCode tests:', () { + test( + 'hashCode hould be the same for two instances with the same values', + () { + // Arrange + const firstPlacemark = Placemark(); + const secondPlacemark = Placemark(); + + // Act & Assert + expect(firstPlacemark.hashCode, secondPlacemark.hashCode); + }, + ); + + test('hashCode should not match when the name property is different', () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'different test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the street property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'different test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the isoCountryCode property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'different test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + 'hashCode should not match when the country property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'different test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + 'hashCode should not match when the postalCode property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'different test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the administrativeArea property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'different test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the subAdministrativeArea property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'different test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the locality property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'different test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the subLocality property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'different test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the thoroughfare property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'different test value', + subThoroughfare: 'test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'hashCode should not match when the subThoroughfare property is different', + () { + // Arrange + const firstPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'test value', + ); + const secondPlacemark = Placemark( + name: 'test value', + street: 'test value', + isoCountryCode: 'test value', + country: 'test value', + postalCode: 'test value', + administrativeArea: 'test value', + subAdministrativeArea: 'test value', + locality: 'test value', + subLocality: 'test value', + thoroughfare: 'test value', + subThoroughfare: 'different test value', + ); + + // Act & Assert + expect(firstPlacemark.hashCode != secondPlacemark.hashCode, true); + }, + ); + }); + + group('fromMaps tests:', () { + test('fromMaps should throw argument error when message is null', () { + expect(() => Placemark.fromMaps(null), throwsArgumentError); + }); + }); + + group('fromMap tests:', () { + test('fromMap should throw argument error when message is null', () { + expect(() => Placemark.fromMap(null), throwsArgumentError); + }); + }); + + group('toString tests:', () { + test('toString should list the contents of all properties', () { + const mockPlacemark = Placemark( + administrativeArea: 'Overijssel', + country: 'Netherlands', + isoCountryCode: 'NL', + locality: 'Enschede', + name: 'Gronausestraat', + postalCode: '', + street: 'Gronausestraat 710', + subAdministrativeArea: 'Enschede', + subLocality: 'Enschmarke', + subThoroughfare: '', + thoroughfare: 'Gronausestraat', + ); + + final expected = + ''' + Name: ${mockPlacemark.name}, + Street: ${mockPlacemark.street}, + ISO Country Code: ${mockPlacemark.isoCountryCode}, + Country: ${mockPlacemark.country}, + Postal code: ${mockPlacemark.postalCode}, + Administrative area: ${mockPlacemark.administrativeArea}, + Subadministrative area: ${mockPlacemark.subAdministrativeArea}, + Locality: ${mockPlacemark.locality}, + Sublocality: ${mockPlacemark.subLocality}, + Thoroughfare: ${mockPlacemark.thoroughfare}, + Subthoroughfare: ${mockPlacemark.subThoroughfare}'''; + + expect(mockPlacemark.toString(), expected); + }); + }); +} diff --git a/geocoding_platform_interface/test/src/geocoding_platform_factory_test.dart b/geocoding_platform_interface/test/src/geocoding_platform_factory_test.dart new file mode 100644 index 0000000..d9c72ce --- /dev/null +++ b/geocoding_platform_interface/test/src/geocoding_platform_factory_test.dart @@ -0,0 +1,71 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter_test/flutter_test.dart'; +import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; +import 'package:mockito/mockito.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('$GeocodingPlatformFactory', () { + test('Default instance equals null', () { + expect(GeocodingPlatformFactory.instance, isNull); + }); + + test('Cannot be implemented with `implements`', () { + expect(() { + GeocodingPlatformFactory.instance = + ImplementsGeocodingPlatformFactory(); + // In versions of `package:plugin_platform_interface` prior to fixing + // https://github.com/flutter/flutter/issues/109339, an attempt to + // implement a platform interface using `implements` would sometimes + // throw a `NoSuchMethodError` and other times throw an + // `AssertionError`. After the issue is fixed, an `AssertionError` will + // always be thrown. For the purpose of this test, we don't really care + // what exception is thrown, so just allow any exception. + }, throwsA(anything)); + }); + + test('Can be extended', () { + GeocodingPlatformFactory.instance = ExtendsGeocodingPlatformFactory(); + }); + + test('Can be mocked with `implements`', () { + final mock = MockGeocodingPlatformFactory(); + GeocodingPlatformFactory.instance = mock; + }); + + test( + // ignore: lines_longer_than_80_chars + 'Default implementation of createGeocoding should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocodingPlatformFactory(); + + // Act & Assert + expect( + () => geocodingPlatform.createGeocoding( + const GeocodingCreationParams(), + ), + throwsUnimplementedError, + ); + }, + ); + }); +} + +class ImplementsGeocodingPlatformFactory implements GeocodingPlatformFactory { + @override + dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); +} + +class MockGeocodingPlatformFactory extends Mock + with + // ignore: prefer_mixin + MockPlatformInterfaceMixin + implements GeocodingPlatformFactory {} + +class ExtendsGeocodingPlatformFactory extends GeocodingPlatformFactory {} diff --git a/geocoding_platform_interface/test/src/geocoding_test.dart b/geocoding_platform_interface/test/src/geocoding_test.dart new file mode 100644 index 0000000..ab8cdce --- /dev/null +++ b/geocoding_platform_interface/test/src/geocoding_test.dart @@ -0,0 +1,141 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter_test/flutter_test.dart'; +import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; +import 'package:mockito/annotations.dart'; +import 'package:mockito/mockito.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'geocoding_test.mocks.dart'; + +@GenerateNiceMocks([MockSpec()]) +void main() { + setUp(() { + GeocodingPlatformFactory.instance = MockGeocodingPlatformFactoryWithMixin(); + }); + + test('Cannot be implemented with `implements`', () { + when( + (GeocodingPlatformFactory.instance! as MockGeocodingPlatformFactory) + .createGeocoding(any), + ).thenReturn(ImplementsGeocoding()); + + expect(() { + Geocoding(const GeocodingCreationParams()); + + // In versions of `package:plugin_platform_interface` prior to fixing + // https://github.com/flutter/flutter/issues/109339, an attempt to + // implement a platform interface using `implements` would sometimes + // throw a `NoSuchMethodError` and other times throw an + // `AssertionError`. After the issue is fixed, an `AssertionError` will + // always be thrown. For the purpose of this test, we don't really care + // what exception is thrown, so just allow any exception. + }, throwsA(anything)); + }); + + test('Can be extended', () { + const GeocodingCreationParams params = GeocodingCreationParams(); + when( + (GeocodingPlatformFactory.instance! as MockGeocodingPlatformFactory) + .createGeocoding(any), + ).thenReturn(ExtendsGeocoding(params)); + + expect(Geocoding(params), isNotNull); + }); + + test('Can be mocked with `implements`', () { + when( + (GeocodingPlatformFactory.instance! as MockGeocodingPlatformFactory) + .createGeocoding(any), + ).thenReturn(MockGeocoding()); + + expect(Geocoding(const GeocodingCreationParams()), isNotNull); + }); + + test( + // ignore: lines_longer_than_80_chars + 'Default implementation of locationFromAddress should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocoding( + const GeocodingCreationParams(), + ); + + // Act & Assert + expect( + () => geocodingPlatform.locationFromAddress('address'), + throwsUnimplementedError, + ); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'Default implementation of isPresent should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocoding( + const GeocodingCreationParams(), + ); + + // Act & Assert + expect(() => geocodingPlatform.isPresent(), throwsUnimplementedError); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'Default implementation of placemarkFromAddress should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocoding( + const GeocodingCreationParams(), + ); + + // Act & Assert + expect( + () => geocodingPlatform.placemarkFromAddress('address'), + throwsUnimplementedError, + ); + }, + ); + + test( + // ignore: lines_longer_than_80_chars + 'Default implementation of placemarkFromCoordinates should throw unimplemented error', + () { + // Arrange + final geocodingPlatform = ExtendsGeocoding( + const GeocodingCreationParams(), + ); + + // Act & Assert + expect( + () => geocodingPlatform.placemarkFromCoordinates(0.0, 0.0), + throwsUnimplementedError, + ); + }, + ); +} + +class MockGeocodingPlatformFactoryWithMixin extends MockGeocodingPlatformFactory + with + // ignore: prefer_mixin + MockPlatformInterfaceMixin {} + +class ImplementsGeocoding implements Geocoding { + @override + dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); +} + +class MockGeocoding extends Mock + with + // ignore: prefer_mixin + MockPlatformInterfaceMixin + implements Geocoding {} + +class ExtendsGeocoding extends Geocoding { + ExtendsGeocoding(super.params) : super.implementation(); +} diff --git a/geocoding_platform_interface/test/src/geocoding_test.mocks.dart b/geocoding_platform_interface/test/src/geocoding_test.mocks.dart new file mode 100644 index 0000000..aba4b61 --- /dev/null +++ b/geocoding_platform_interface/test/src/geocoding_test.mocks.dart @@ -0,0 +1,49 @@ +// Mocks generated by Mockito 5.4.4 from annotations +// in geocoding_platform_interface/test/src/geocoding_test.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:geocoding_platform_interface/src/geocoding.dart' as _i2; +import 'package:geocoding_platform_interface/src/geocoding_platform_factory.dart' + as _i3; +import 'package:geocoding_platform_interface/src/types/types.dart' as _i4; +import 'package:mockito/mockito.dart' as _i1; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeGeocoding_0 extends _i1.SmartFake implements _i2.Geocoding { + _FakeGeocoding_0(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + +/// A class which mocks [GeocodingPlatformFactory]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockGeocodingPlatformFactory extends _i1.Mock + implements _i3.GeocodingPlatformFactory { + @override + _i2.Geocoding createGeocoding(_i4.GeocodingCreationParams? params) => + (super.noSuchMethod( + Invocation.method(#createGeocoding, [params]), + returnValue: _FakeGeocoding_0( + this, + Invocation.method(#createGeocoding, [params]), + ), + returnValueForMissingStub: _FakeGeocoding_0( + this, + Invocation.method(#createGeocoding, [params]), + ), + ) + as _i2.Geocoding); +} diff --git a/geocoding_platform_interface/test/src/models/location_test.dart b/geocoding_platform_interface/test/src/models/location_test.dart deleted file mode 100644 index cc8d975..0000000 --- a/geocoding_platform_interface/test/src/models/location_test.dart +++ /dev/null @@ -1,121 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; - -void main() { - group('hashCode tests:', () { - test('hashCode hould be the same for two instances with the same values', - () { - // Arrange - final firstLocation = Location( - latitude: 0, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch((0))); - final secondLocation = Location( - latitude: 0, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch((0))); - - // Act & Assert - expect( - firstLocation.hashCode, - secondLocation.hashCode, - ); - }); - - test('hashCode should not match when the latitude property is different', - () { - // Arrange - final firstLocation = Location( - latitude: 0, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch(0), - ); - final secondLocation = Location( - latitude: 1, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch(0), - ); - - // Act & Assert - expect( - firstLocation.hashCode != secondLocation.hashCode, - true, - ); - }); - - test('hashCode should not match when the longitude property is different', - () { - // Arrange - final firstLocation = Location( - latitude: 0, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch(0), - ); - final secondLocation = Location( - latitude: 0, - longitude: 1, - timestamp: DateTime.fromMillisecondsSinceEpoch(0), - ); - - // Act & Assert - expect( - firstLocation.hashCode != secondLocation.hashCode, - true, - ); - }); - - test('hashCode should not match when the timestamp property is different', - () { - // Arrange - final firstLocation = Location( - latitude: 0, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch(0), - ); - final secondLocation = Location( - latitude: 0, - longitude: 0, - timestamp: DateTime.fromMillisecondsSinceEpoch(1), - ); - - // Act & Assert - expect( - firstLocation.hashCode != secondLocation.hashCode, - true, - ); - }); - }); - - group('fromMap tests:', () { - test('fromMap should throw argument error when message is null', () { - expect(() => Location.fromMap(null), throwsArgumentError); - }); - - test('fromMap throws argument error when latitude or longitude are null', - () { - final location = { - 'latitude': null, - 'longitude': null, - 'timestamp': 1615216821218, - }; - expect(() => Location.fromMap(location), throwsArgumentError); - }); - }); - - group('toString tests:', () { - test('toString should list the contents of all properties', () { - final mockLocation = Location( - latitude: 52.2165157, - longitude: 6.9437819, - timestamp: DateTime.fromMillisecondsSinceEpoch(0).toUtc(), - ); - - final expected = ''' - Latitude: ${mockLocation.latitude}, - Longitude: ${mockLocation.longitude}, - Timestamp: ${mockLocation.timestamp}'''; - - expect(mockLocation.toString(), expected); - }); - }); -} diff --git a/geocoding_platform_interface/test/src/models/placemark_test.dart b/geocoding_platform_interface/test/src/models/placemark_test.dart deleted file mode 100644 index d1eb270..0000000 --- a/geocoding_platform_interface/test/src/models/placemark_test.dart +++ /dev/null @@ -1,484 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; - -void main() { - group('hashCode tests:', () { - test('hashCode hould be the same for two instances with the same values', - () { - // Arrange - const firstPlacemark = Placemark(); - const secondPlacemark = Placemark(); - - // Act & Assert - expect( - firstPlacemark.hashCode, - secondPlacemark.hashCode, - ); - }); - - test('hashCode should not match when the name property is different', () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'different test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the street property is different', () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'different test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the isoCountryCode property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'different test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test('hashCode should not match when the country property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'different test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test('hashCode should not match when the postalCode property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'different test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the administrativeArea property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'different test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the subAdministrativeArea property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'different test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the locality property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'different test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the subLocality property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'different test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the thoroughfare property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'different test value', - subThoroughfare: 'test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - - test( - // ignore: lines_longer_than_80_chars - 'hashCode should not match when the subThoroughfare property is different', - () { - // Arrange - const firstPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'test value', - ); - const secondPlacemark = Placemark( - name: 'test value', - street: 'test value', - isoCountryCode: 'test value', - country: 'test value', - postalCode: 'test value', - administrativeArea: 'test value', - subAdministrativeArea: 'test value', - locality: 'test value', - subLocality: 'test value', - thoroughfare: 'test value', - subThoroughfare: 'different test value', - ); - - // Act & Assert - expect( - firstPlacemark.hashCode != secondPlacemark.hashCode, - true, - ); - }); - }); - - group('fromMaps tests:', () { - test('fromMaps should throw argument error when message is null', () { - expect(() => Placemark.fromMaps(null), throwsArgumentError); - }); - }); - - group('fromMap tests:', () { - test('fromMap should throw argument error when message is null', () { - expect(() => Placemark.fromMap(null), throwsArgumentError); - }); - }); - - group('toString tests:', () { - test('toString should list the contents of all properties', () { - const mockPlacemark = Placemark( - administrativeArea: 'Overijssel', - country: 'Netherlands', - isoCountryCode: 'NL', - locality: 'Enschede', - name: 'Gronausestraat', - postalCode: '', - street: 'Gronausestraat 710', - subAdministrativeArea: 'Enschede', - subLocality: 'Enschmarke', - subThoroughfare: '', - thoroughfare: 'Gronausestraat'); - - final expected = ''' - Name: ${mockPlacemark.name}, - Street: ${mockPlacemark.street}, - ISO Country Code: ${mockPlacemark.isoCountryCode}, - Country: ${mockPlacemark.country}, - Postal code: ${mockPlacemark.postalCode}, - Administrative area: ${mockPlacemark.administrativeArea}, - Subadministrative area: ${mockPlacemark.subAdministrativeArea}, - Locality: ${mockPlacemark.locality}, - Sublocality: ${mockPlacemark.subLocality}, - Thoroughfare: ${mockPlacemark.thoroughfare}, - Subthoroughfare: ${mockPlacemark.subThoroughfare}'''; - - expect(mockPlacemark.toString(), expected); - }); - }); -} From 54a89e1848f05c615f8c9662ef88aa7e9ccf82fd Mon Sep 17 00:00:00 2001 From: Maurits van Beusekom Date: Fri, 11 Jul 2025 10:10:45 +0200 Subject: [PATCH 2/4] Adds Darwin (iOS and macOS) implementation of PI v4 --- geocoding_darwin/.gitignore | 34 + geocoding_darwin/.metadata | 33 + geocoding_darwin/CHANGELOG.md | 3 + geocoding_darwin/CONTRIBUTING.md | 65 + geocoding_darwin/LICENSE | 21 + geocoding_darwin/README.md | 37 + geocoding_darwin/analysis_options.yaml | 10 + geocoding_darwin/darwin/.gitignore | 41 + .../darwin/geocoding_darwin.podspec | 37 + .../darwin/geocoding_darwin/Package.swift | 25 + .../CLGeocoder/CLFloorProxyApiDelegate.swift | 11 + .../CLGeocoder/CLGeocoderLibrary.g.swift | 1781 +++++++++++++ .../CLGeocoderProxyApiDelegate.swift | 48 + ...LocationCoordinate2DProxyApiDelegate.swift | 17 + .../CLLocationProxyApiDelegate.swift | 76 + ...ionSourceInformationProxyApiDelegate.swift | 17 + .../CLPlacemarkProxyApiDelegate.swift | 58 + .../CNPostalAddressProxyApiDelegate.swift | 39 + .../CLGeocoder/LocaleProxyApiDelegate.swift | 16 + .../CLGeocoder/NSObjectProxyApiDelegate.swift | 107 + .../CLGeocoder/ProxyApiRegistrar.swift | 92 + .../CLGeocoder/StructWrappers.swift | 26 + .../GeocodingDarwinPlugin.swift | 32 + .../geocoding_darwin/PrivacyInfo.xcprivacy | 14 + geocoding_darwin/example/.gitignore | 45 + geocoding_darwin/example/README.md | 16 + .../example/analysis_options.yaml | 28 + geocoding_darwin/example/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../example/ios/Flutter/Debug.xcconfig | 1 + .../example/ios/Flutter/Release.xcconfig | 1 + .../ios/Runner.xcodeproj/project.pbxproj | 657 +++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 119 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../example/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + .../example/ios/Runner/Info.plist | 49 + .../ios/Runner/Runner-Bridging-Header.h | 1 + .../example/ios/RunnerTests/RunnerTests.swift | 27 + geocoding_darwin/example/lib/main.dart | 164 ++ .../lib/plugin_example/geocode_page.dart | 194 ++ .../example/lib/template/globals.dart | 37 + .../example/lib/template/info_page.dart | 101 + geocoding_darwin/example/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 14 + geocoding_darwin/example/macos/Podfile | 42 + .../macos/Runner.xcodeproj/project.pbxproj | 803 ++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 99 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../example/macos/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 +++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 12 + .../example/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../example/macos/Runner/Release.entitlements | 8 + .../macos/RunnerTests/RunnerTests.swift | 28 + geocoding_darwin/example/pubspec.yaml | 29 + .../res/images/baseflow_logo_def_light-02.png | Bin 0 -> 22696 bytes .../res/images/poweredByBaseflowLogoLight.png | Bin 0 -> 4561 bytes .../images/poweredByBaseflowLogoLight@2x.png | Bin 0 -> 10820 bytes .../images/poweredByBaseflowLogoLight@3x.png | Bin 0 -> 17550 bytes geocoding_darwin/lib/geocoding_darwin.dart | 2 + .../lib/src/clgeocoder/clgeocoder.g.dart | 2321 +++++++++++++++++ .../lib/src/clgeocoder/clgeocoder_proxy.dart | 33 + .../lib/src/geocoding_darwin.dart | 157 ++ .../lib/src/geocoding_darwin_factory.dart | 17 + geocoding_darwin/pigeons/clgeocoder.dart | 344 +++ geocoding_darwin/pubspec.yaml | 35 + 111 files changed, 8898 insertions(+) create mode 100644 geocoding_darwin/.gitignore create mode 100644 geocoding_darwin/.metadata create mode 100644 geocoding_darwin/CHANGELOG.md create mode 100644 geocoding_darwin/CONTRIBUTING.md create mode 100644 geocoding_darwin/LICENSE create mode 100644 geocoding_darwin/README.md create mode 100644 geocoding_darwin/analysis_options.yaml create mode 100644 geocoding_darwin/darwin/.gitignore create mode 100644 geocoding_darwin/darwin/geocoding_darwin.podspec create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Package.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLFloorProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderLibrary.g.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationCoordinate2DProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationSourceInformationProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLPlacemarkProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CNPostalAddressProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/LocaleProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/NSObjectProxyApiDelegate.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/ProxyApiRegistrar.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/StructWrappers.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/GeocodingDarwinPlugin.swift create mode 100644 geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy create mode 100644 geocoding_darwin/example/.gitignore create mode 100644 geocoding_darwin/example/README.md create mode 100644 geocoding_darwin/example/analysis_options.yaml create mode 100644 geocoding_darwin/example/ios/.gitignore create mode 100644 geocoding_darwin/example/ios/Flutter/AppFrameworkInfo.plist create mode 100644 geocoding_darwin/example/ios/Flutter/Debug.xcconfig create mode 100644 geocoding_darwin/example/ios/Flutter/Release.xcconfig create mode 100644 geocoding_darwin/example/ios/Runner.xcodeproj/project.pbxproj create mode 100644 geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 geocoding_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 geocoding_darwin/example/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 geocoding_darwin/example/ios/Runner/AppDelegate.swift create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 geocoding_darwin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 geocoding_darwin/example/ios/Runner/Base.lproj/Main.storyboard create mode 100644 geocoding_darwin/example/ios/Runner/Info.plist create mode 100644 geocoding_darwin/example/ios/Runner/Runner-Bridging-Header.h create mode 100644 geocoding_darwin/example/ios/RunnerTests/RunnerTests.swift create mode 100644 geocoding_darwin/example/lib/main.dart create mode 100644 geocoding_darwin/example/lib/plugin_example/geocode_page.dart create mode 100644 geocoding_darwin/example/lib/template/globals.dart create mode 100644 geocoding_darwin/example/lib/template/info_page.dart create mode 100644 geocoding_darwin/example/macos/.gitignore create mode 100644 geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig create mode 100644 geocoding_darwin/example/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 geocoding_darwin/example/macos/Podfile create mode 100644 geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj create mode 100644 geocoding_darwin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 geocoding_darwin/example/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 geocoding_darwin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 geocoding_darwin/example/macos/Runner/AppDelegate.swift create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 geocoding_darwin/example/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 geocoding_darwin/example/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 geocoding_darwin/example/macos/Runner/Configs/Debug.xcconfig create mode 100644 geocoding_darwin/example/macos/Runner/Configs/Release.xcconfig create mode 100644 geocoding_darwin/example/macos/Runner/Configs/Warnings.xcconfig create mode 100644 geocoding_darwin/example/macos/Runner/DebugProfile.entitlements create mode 100644 geocoding_darwin/example/macos/Runner/Info.plist create mode 100644 geocoding_darwin/example/macos/Runner/MainFlutterWindow.swift create mode 100644 geocoding_darwin/example/macos/Runner/Release.entitlements create mode 100644 geocoding_darwin/example/macos/RunnerTests/RunnerTests.swift create mode 100644 geocoding_darwin/example/pubspec.yaml create mode 100644 geocoding_darwin/example/res/images/baseflow_logo_def_light-02.png create mode 100644 geocoding_darwin/example/res/images/poweredByBaseflowLogoLight.png create mode 100644 geocoding_darwin/example/res/images/poweredByBaseflowLogoLight@2x.png create mode 100644 geocoding_darwin/example/res/images/poweredByBaseflowLogoLight@3x.png create mode 100644 geocoding_darwin/lib/geocoding_darwin.dart create mode 100644 geocoding_darwin/lib/src/clgeocoder/clgeocoder.g.dart create mode 100644 geocoding_darwin/lib/src/clgeocoder/clgeocoder_proxy.dart create mode 100644 geocoding_darwin/lib/src/geocoding_darwin.dart create mode 100644 geocoding_darwin/lib/src/geocoding_darwin_factory.dart create mode 100644 geocoding_darwin/pigeons/clgeocoder.dart create mode 100644 geocoding_darwin/pubspec.yaml diff --git a/geocoding_darwin/.gitignore b/geocoding_darwin/.gitignore new file mode 100644 index 0000000..ebf83a0 --- /dev/null +++ b/geocoding_darwin/.gitignore @@ -0,0 +1,34 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +build/ + diff --git a/geocoding_darwin/.metadata b/geocoding_darwin/.metadata new file mode 100644 index 0000000..407aca7 --- /dev/null +++ b/geocoding_darwin/.metadata @@ -0,0 +1,33 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "fcf2c11572af6f390246c056bc905eca609533a0" + channel: "stable" + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: fcf2c11572af6f390246c056bc905eca609533a0 + base_revision: fcf2c11572af6f390246c056bc905eca609533a0 + - platform: ios + create_revision: fcf2c11572af6f390246c056bc905eca609533a0 + base_revision: fcf2c11572af6f390246c056bc905eca609533a0 + - platform: macos + create_revision: fcf2c11572af6f390246c056bc905eca609533a0 + base_revision: fcf2c11572af6f390246c056bc905eca609533a0 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/geocoding_darwin/CHANGELOG.md b/geocoding_darwin/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/geocoding_darwin/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/geocoding_darwin/CONTRIBUTING.md b/geocoding_darwin/CONTRIBUTING.md new file mode 100644 index 0000000..fa0aa35 --- /dev/null +++ b/geocoding_darwin/CONTRIBUTING.md @@ -0,0 +1,65 @@ +# Contributing to `geocoding_darwin` + +Please start by taking a look at the general guide to contributing to the `baseflow/flutter-geocoding` repo: +https://github.com/baseflow/flutter-geocoding/blob/main/CONTRIBUTING.md + +## Package Structure + +This plugin serves as a platform implementation plugin as outlined in [federated plugins](https://docs.flutter.dev/packages-and-plugins/developing-packages#federated-plugins). +The sections below will provide an overview of how this plugin implements this portion with iOS and +macOS. + +For making changes to this package, please take a look at [changing federated plugins](https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins). + +### Quick Overview + +This plugin implements the platform interface provided by `geocoding_platform_interface` using +the native CLGeocoding APIs (pre iOS 26) or MapKit APIs (post iOS 26) to convert location +information into addresses and vice versa. + +#### SDK Wrappers + +To access native APIS, this plugins uses Dart wrappers of the native library. The native library is +wrapped using using the `ProxyApi` feature from the `pigeon` package. + +The wrappers for the native library can be updated and modified by changing `pigeons/clgeocoder.dart` +or `pigeons/mapkit.dart`. + +The generated files are located at: +* `lib/src/common/clgeocoder.g.dart` +* `lib/src/common/mapkit.g.dart` +* `darwin/Sources/CLGeocoder/CLGeocoderLibrary.g.swift` +* `darwin/Sources/MapKit/MapKitLibrary.g.swift` + +To update the wrapper, follow the steps below: + +##### 1. Make changes to the respective pigeon file that matches the native SDK + +* CLGeocoder Dependency: https://developer.apple.com/documentation/corelocation/clgeocoder +* MapKit Dependency: https://developer.apple.com/documentation/mapkit +* Pigeon files to update: + * `pigeons/clgeocoder.dart` for updates on the native CLGeocoder SDK (deprecated as of iOS 26) + * `pigeons/mapkit.dart` for updated on the native MapKit SDK + + +##### 2. Run the code generator from the terminal + +After applying the updates, generate the code to update the implementations: + +* `dart run pigeon --input pigeons/clgeocoder.dart` +* `dart run pigeon --input pigeons/mapkit.dart` + +##### 3. Update the generated APIs in native code + +Running the `flutter build` command from step 1 again should provide build errors and indicate what +needs to be done. Alternatively, it can be easier to update native code with the platform's specific +IDE: + +Open `example/ios/` or `example/macos/` in Xcode. + +##### 4. Write API tests + +Assuming a non-static method or constructor was added to the native wrapper, a native test will need +to be added. + +Tests location: `darwin/Tests` \ No newline at end of file diff --git a/geocoding_darwin/LICENSE b/geocoding_darwin/LICENSE new file mode 100644 index 0000000..bd6192f --- /dev/null +++ b/geocoding_darwin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Baseflow + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/geocoding_darwin/README.md b/geocoding_darwin/README.md new file mode 100644 index 0000000..8d6edbc --- /dev/null +++ b/geocoding_darwin/README.md @@ -0,0 +1,37 @@ +# geocoding\_darwin + +The Apple Geocoding implementation of [`geocoding`][1]. + +## Usage + +This package is [endorsed][2], which means you can simply use `geocoding` +normally. This package will be automatically included in your app when you do, +so you do not need to add it to your `pubspec.yaml`. + +However, if you `import` this package to use any of its APIs directly, you +should add it to your `pubspec.yaml` as usual. + +### External Native API + +The plugin also provides a native API accessible by the native code of iOS applications or packages. +This API follows the convention of breaking changes of the Dart API, which means that any changes to +the class that are not backwards compatible will only be made with a major version change of the +plugin. Native code other than this external API does not follow breaking change conventions, so +app or plugin clients should not use any other native APIs. + +The API can be accessed by importing the native plugin `geocoding_darwin`: + +Dart: + +```dart +import 'package:geocoding_darwin/geocoding_darwin.dart'; +``` + +Then you will have access to the native classes `CLGeocoder` and `MapKit`. + +## Contributing + +For information on contributing to this plugin, see [`CONTRIBUTING.md`](CONTRIBUTING.md). + +[1]: https://pub.dev/packages/geocoding +[2]: https://flutter.dev/to/endorsed-federated-plugin \ No newline at end of file diff --git a/geocoding_darwin/analysis_options.yaml b/geocoding_darwin/analysis_options.yaml new file mode 100644 index 0000000..2856055 --- /dev/null +++ b/geocoding_darwin/analysis_options.yaml @@ -0,0 +1,10 @@ +include: package:flutter_lints/flutter.yaml + +analyzer: + exclude: + # Ignore generated files + - "**/*.g.dart" + - "lib/src/generated/*.dart" +linter: + rules: + - public_member_api_docs diff --git a/geocoding_darwin/darwin/.gitignore b/geocoding_darwin/darwin/.gitignore new file mode 100644 index 0000000..9ef6335 --- /dev/null +++ b/geocoding_darwin/darwin/.gitignore @@ -0,0 +1,41 @@ +.idea/ +.vagrant/ +.sconsign.dblite +.svn/ + +.DS_Store +*.swp +profile + +DerivedData/ +build/ +GeneratedPluginRegistrant.h +GeneratedPluginRegistrant.m + +.build/ +.swiftpm/ + +.generated/ + +*.pbxuser +*.mode1v3 +*.mode2v3 +*.perspectivev3 + +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 + +xcuserdata + +*.moved-aside + +*.pyc +*sync/ +Icon? +.tags* + +/Flutter/Generated.xcconfig +/Flutter/ephemeral/ +/Flutter/flutter_export_environment.sh diff --git a/geocoding_darwin/darwin/geocoding_darwin.podspec b/geocoding_darwin/darwin/geocoding_darwin.podspec new file mode 100644 index 0000000..009766e --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin.podspec @@ -0,0 +1,37 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint geocoding_darwin.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'geocoding_darwin' + s.version = '0.0.1' + s.summary = 'Flutter Geocoding.' + s.description = <<-DESC +A Flutter plugin to convert an address into geocoordinates (geocoding) and reverse. +Downloaded by pub (not CocoaPods). + DESC + s.homepage = 'http://github.com/baseflow/flutter-geocoding' + s.license = { :type => 'MIT', :file => '../LICENSE' } + s.author = { 'Baseflow' => 'hello@baseflow.com' } + s.source = { :http => 'https://github.com/baseflow/flutter-geocoding/tree/main/geocoding_darwin' } + s.source_files = 'geocoding_darwin/Sources/geocoding_darwin/**/*.swift' + s.ios.dependency 'Flutter' + s.osx.dependency 'FlutterMacOS' + s.ios.deployment_target = '12.0' + s.osx.deployment_target = '10.15' + + # Flutter.framework does not contain a i386 slice. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.xcconfig = { + 'LIBRARY_SEARCH_PATHS' => '$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift', + 'LD_RUNPATH_SEARCH_PATHS' => '/usr/lib/swift', + } + s.swift_version = '5.0' + + # If your plugin requires a privacy manifest, for example if it uses any + # required reason APIs, update the PrivacyInfo.xcprivacy file to describe your + # plugin's privacy impact, and then uncomment this line. For more information, + # see https://developer.apple.com/documentation/bundleresources/privacy_manifest_files + s.resource_bundles = {'geocoding_darwin_privacy' => ['geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy']} +end + diff --git a/geocoding_darwin/darwin/geocoding_darwin/Package.swift b/geocoding_darwin/darwin/geocoding_darwin/Package.swift new file mode 100644 index 0000000..6a5c02a --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Package.swift @@ -0,0 +1,25 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "geocoding_darwin", + platforms: [ + .iOS("12.0"), + .macOS("10.15") + ], + products: [ + .library(name: "geocoding-darwin", targets: ["geocoding_darwin"]) + ], + dependencies: [], + targets: [ + .target( + name: "geocoding_darwin", + dependencies: [], + resources: [ + .process("PrivacyInfo.xcprivacy"), + ], + ) + ] +) \ No newline at end of file diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLFloorProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLFloorProxyApiDelegate.swift new file mode 100644 index 0000000..7b8771d --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLFloorProxyApiDelegate.swift @@ -0,0 +1,11 @@ +import CoreLocation + +/// ProxyApi implementation for `CLFloor`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CLFloorProxyApiDelegate: PigeonApiDelegateCLFloor { + func level(pigeonApi: PigeonApiCLFloor, pigeonInstance: CLFloor) throws -> Int64 { + return Int64(pigeonInstance.level) + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderLibrary.g.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderLibrary.g.swift new file mode 100644 index 0000000..10badc0 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderLibrary.g.swift @@ -0,0 +1,1781 @@ +// Autogenerated from Pigeon (v25.5.0), do not edit directly. +// See also: https://pub.dev/packages/pigeon + +import Foundation +import CoreLocation +import Contacts + +#if os(iOS) + import Flutter +#elseif os(macOS) + import FlutterMacOS +#else + #error("Unsupported platform.") +#endif + +/// Error class for passing custom error details to Dart side. +final class PigeonError: Error { + let code: String + let message: String? + let details: Sendable? + + init(code: String, message: String?, details: Sendable?) { + self.code = code + self.message = message + self.details = details + } + + var localizedDescription: String { + return + "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" + } +} + +private func wrapResult(_ result: Any?) -> [Any?] { + return [result] +} + +private func wrapError(_ error: Any) -> [Any?] { + if let pigeonError = error as? PigeonError { + return [ + pigeonError.code, + pigeonError.message, + pigeonError.details, + ] + } + if let flutterError = error as? FlutterError { + return [ + flutterError.code, + flutterError.message, + flutterError.details, + ] + } + return [ + "\(error)", + "\(type(of: error))", + "Stacktrace: \(Thread.callStackSymbols)", + ] +} + +private func createConnectionError(withChannelName channelName: String) -> PigeonError { + return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") +} + +private func isNullish(_ value: Any?) -> Bool { + return value is NSNull || value == nil +} + +private func nilOrValue(_ value: Any?) -> T? { + if value is NSNull { return nil } + return value as! T? +} + +/// Handles the callback when an object is deallocated. +protocol CLGeocoderLibraryPigeonInternalFinalizerDelegate: AnyObject { + /// Invoked when the strong reference of an object is deallocated in an `InstanceManager`. + func onDeinit(identifier: Int64) +} + + +// Attaches to an object to receive a callback when the object is deallocated. +internal final class CLGeocoderLibraryPigeonInternalFinalizer { + internal static let associatedObjectKey = malloc(1)! + + private let identifier: Int64 + // Reference to the delegate is weak because the callback should be ignored if the + // `InstanceManager` is deallocated. + internal weak var delegate: CLGeocoderLibraryPigeonInternalFinalizerDelegate? + + private init(identifier: Int64, delegate: CLGeocoderLibraryPigeonInternalFinalizerDelegate) { + self.identifier = identifier + self.delegate = delegate + } + + internal static func attach( + to instance: AnyObject, identifier: Int64, delegate: CLGeocoderLibraryPigeonInternalFinalizerDelegate + ) { + let finalizer = CLGeocoderLibraryPigeonInternalFinalizer(identifier: identifier, delegate: delegate) + objc_setAssociatedObject(instance, associatedObjectKey, finalizer, .OBJC_ASSOCIATION_RETAIN) + } + + static func detach(from instance: AnyObject) { + let finalizer = objc_getAssociatedObject(instance, associatedObjectKey) as? CLGeocoderLibraryPigeonInternalFinalizer + if let finalizer = finalizer { + finalizer.delegate = nil + objc_setAssociatedObject(instance, associatedObjectKey, nil, .OBJC_ASSOCIATION_ASSIGN) + } + } + + deinit { + delegate?.onDeinit(identifier: identifier) + } +} + + +/// Maintains instances used to communicate with the corresponding objects in Dart. +/// +/// Objects stored in this container are represented by an object in Dart that is also stored in +/// an InstanceManager with the same identifier. +/// +/// When an instance is added with an identifier, either can be used to retrieve the other. +/// +/// Added instances are added as a weak reference and a strong reference. When the strong +/// reference is removed and the weak reference is deallocated,`CLGeocoderLibraryPigeonInternalFinalizerDelegate.onDeinit` +/// is called with the instance's identifier. However, if the strong reference is removed and then the identifier is +/// retrieved with the intention to pass the identifier to Dart (e.g. by calling `identifierWithStrongReference`), +/// the strong reference to the instance is re-added. The strong reference will then need to be removed manually +/// again. +/// +/// Accessing and inserting to an InstanceManager is thread safe. +final class CLGeocoderLibraryPigeonInstanceManager { + // Identifiers are locked to a specific range to avoid collisions with objects + // created simultaneously from Dart. + // Host uses identifiers >= 2^16 and Dart is expected to use values n where, + // 0 <= n < 2^16. + private static let minHostCreatedIdentifier: Int64 = 65536 + + private let lockQueue = DispatchQueue(label: "CLGeocoderLibraryPigeonInstanceManager") + private let identifiers: NSMapTable = NSMapTable( + keyOptions: [.weakMemory, .objectPointerPersonality], valueOptions: .strongMemory) + private let weakInstances: NSMapTable = NSMapTable( + keyOptions: .strongMemory, valueOptions: [.weakMemory, .objectPointerPersonality]) + private let strongInstances: NSMapTable = NSMapTable( + keyOptions: .strongMemory, valueOptions: [.strongMemory, .objectPointerPersonality]) + private let finalizerDelegate: CLGeocoderLibraryPigeonInternalFinalizerDelegate + private var nextIdentifier: Int64 = minHostCreatedIdentifier + + public init(finalizerDelegate: CLGeocoderLibraryPigeonInternalFinalizerDelegate) { + self.finalizerDelegate = finalizerDelegate + } + + /// Adds a new instance that was instantiated from Dart. + /// + /// The same instance can be added multiple times, but each identifier must be unique. This allows + /// two objects that are equivalent (e.g. conforms to `Equatable`) to both be added. + /// + /// - Parameters: + /// - instance: the instance to be stored + /// - identifier: the identifier to be paired with instance. This value must be >= 0 and unique + func addDartCreatedInstance(_ instance: AnyObject, withIdentifier identifier: Int64) { + lockQueue.async { + self.addInstance(instance, withIdentifier: identifier) + } + } + + /// Adds a new instance that was instantiated from the host platform. + /// + /// - Parameters: + /// - instance: the instance to be stored. This must be unique to all other added instances. + /// - Returns: the unique identifier (>= 0) stored with instance + func addHostCreatedInstance(_ instance: AnyObject) -> Int64 { + assert(!containsInstance(instance), "Instance of \(instance) has already been added.") + var identifier: Int64 = -1 + lockQueue.sync { + identifier = nextIdentifier + nextIdentifier += 1 + self.addInstance(instance, withIdentifier: identifier) + } + return identifier + } + + /// Removes `instanceIdentifier` and its associated strongly referenced instance, if present, from the manager. + /// + /// - Parameters: + /// - instanceIdentifier: the identifier paired to an instance. + /// - Returns: removed instance if the manager contains the given identifier, otherwise `nil` if + /// the manager doesn't contain the value + func removeInstance(withIdentifier instanceIdentifier: Int64) throws -> T? { + var instance: AnyObject? = nil + lockQueue.sync { + instance = strongInstances.object(forKey: NSNumber(value: instanceIdentifier)) + strongInstances.removeObject(forKey: NSNumber(value: instanceIdentifier)) + } + return instance as? T + } + + /// Retrieves the instance associated with identifier. + /// + /// - Parameters: + /// - instanceIdentifier: the identifier associated with an instance + /// - Returns: the instance associated with `instanceIdentifier` if the manager contains the value, otherwise + /// `nil` if the manager doesn't contain the value + func instance(forIdentifier instanceIdentifier: Int64) -> T? { + var instance: AnyObject? = nil + lockQueue.sync { + instance = weakInstances.object(forKey: NSNumber(value: instanceIdentifier)) + } + return instance as? T + } + + private func addInstance(_ instance: AnyObject, withIdentifier identifier: Int64) { + assert(identifier >= 0) + assert( + weakInstances.object(forKey: identifier as NSNumber) == nil, + "Identifier has already been added: \(identifier)") + identifiers.setObject(NSNumber(value: identifier), forKey: instance) + weakInstances.setObject(instance, forKey: NSNumber(value: identifier)) + strongInstances.setObject(instance, forKey: NSNumber(value: identifier)) + CLGeocoderLibraryPigeonInternalFinalizer.attach(to: instance, identifier: identifier, delegate: finalizerDelegate) + } + + /// Retrieves the identifier paired with an instance. + /// + /// If the manager contains a strong reference to `instance`, it will return the identifier + /// associated with `instance`. If the manager contains only a weak reference to `instance`, a new + /// strong reference to `instance` will be added and will need to be removed again with `removeInstance`. + /// + /// If this method returns a nonnull identifier, this method also expects the Dart + /// `CLGeocoderLibraryPigeonInstanceManager` to have, or recreate, a weak reference to the Dart instance the + /// identifier is associated with. + /// + /// - Parameters: + /// - instance: an instance that may be stored in the manager + /// - Returns: the identifier associated with `instance` if the manager contains the value, otherwise + /// `nil` if the manager doesn't contain the value + func identifierWithStrongReference(forInstance instance: AnyObject) -> Int64? { + var identifier: Int64? = nil + lockQueue.sync { + if let existingIdentifier = identifiers.object(forKey: instance)?.int64Value { + strongInstances.setObject(instance, forKey: NSNumber(value: existingIdentifier)) + identifier = existingIdentifier + } + } + return identifier + } + + /// Whether this manager contains the given `instance`. + /// + /// - Parameters: + /// - instance: the instance whose presence in this manager is to be tested + /// - Returns: whether this manager contains the given `instance` + func containsInstance(_ instance: AnyObject) -> Bool { + var containsInstance = false + lockQueue.sync { + containsInstance = identifiers.object(forKey: instance) != nil + } + return containsInstance + } + + /// Removes all of the instances from this manager. + /// + /// The manager will be empty after this call returns. + func removeAllObjects() throws { + lockQueue.sync { + let weakInstancesEnumerator = weakInstances.objectEnumerator()! + while let instance = weakInstancesEnumerator.nextObject() { + CLGeocoderLibraryPigeonInternalFinalizer.detach(from: instance as AnyObject) + } + identifiers.removeAllObjects() + weakInstances.removeAllObjects() + strongInstances.removeAllObjects() + nextIdentifier = CLGeocoderLibraryPigeonInstanceManager.minHostCreatedIdentifier + } + } + + /// The number of instances stored as a strong reference. + /// + /// For debugging and testing purposes. + internal var strongInstanceCount: Int { + var count: Int = 0 + lockQueue.sync { + count = strongInstances.count + } + return count + } + + /// The number of instances stored as a weak reference. + /// + /// For debugging and testing purposes. NSMapTables that store keys or objects as weak + /// reference will be reclaimed non-deterministically. + internal var weakInstanceCount: Int { + var count: Int = 0 + lockQueue.sync { + count = weakInstances.count + } + return count + } +} + + +private class CLGeocoderLibraryPigeonInstanceManagerApi { + /// The codec used for serializing messages. + var codec: FlutterStandardMessageCodec { CLGeocoderLibraryPigeonCodec.shared } + + /// Handles sending and receiving messages with Dart. + unowned let binaryMessenger: FlutterBinaryMessenger + + init(binaryMessenger: FlutterBinaryMessenger) { + self.binaryMessenger = binaryMessenger + } + + /// Sets up an instance of `CLGeocoderLibraryPigeonInstanceManagerApi` to handle messages through the `binaryMessenger`. + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, instanceManager: CLGeocoderLibraryPigeonInstanceManager?) { + let codec = CLGeocoderLibraryPigeonCodec.shared + let removeStrongReferenceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.removeStrongReference", binaryMessenger: binaryMessenger, codec: codec) + if let instanceManager = instanceManager { + removeStrongReferenceChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let identifierArg = args[0] as! Int64 + do { + let _: AnyObject? = try instanceManager.removeInstance(withIdentifier: identifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + removeStrongReferenceChannel.setMessageHandler(nil) + } + let clearChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.clear", binaryMessenger: binaryMessenger, codec: codec) + if let instanceManager = instanceManager { + clearChannel.setMessageHandler { _, reply in + do { + try instanceManager.removeAllObjects() + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + clearChannel.setMessageHandler(nil) + } + } + + /// Sends a message to the Dart `InstanceManager` to remove the strong reference of the instance associated with `identifier`. + func removeStrongReference(identifier identifierArg: Int64, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.removeStrongReference" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([identifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } +} +protocol CLGeocoderLibraryPigeonProxyApiDelegate { + /// An implementation of [PigeonApiCLFloor] used to add a new Dart instance of + /// `CLFloor` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCLFloor(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLFloor + /// An implementation of [PigeonApiCLGeocoder] used to add a new Dart instance of + /// `CLGeocoder` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCLGeocoder(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLGeocoder + /// An implementation of [PigeonApiCLLocation] used to add a new Dart instance of + /// `CLLocation` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCLLocation(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLLocation + /// An implementation of [PigeonApiCLLocationCoordinate2D] used to add a new Dart instance of + /// `CLLocationCoordinate2D` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCLLocationCoordinate2D(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLLocationCoordinate2D + /// An implementation of [PigeonApiCLLocationSourceInformation] used to add a new Dart instance of + /// `CLLocationSourceInformation` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCLLocationSourceInformation(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLLocationSourceInformation + /// An implementation of [PigeonApiCLPlacemark] used to add a new Dart instance of + /// `CLPlacemark` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCLPlacemark(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLPlacemark + /// An implementation of [PigeonApiCNPostalAddress] used to add a new Dart instance of + /// `CNPostalAddress` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiCNPostalAddress(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCNPostalAddress + /// An implementation of [PigeonApiLocale] used to add a new Dart instance of + /// `Locale` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiLocale(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiLocale + /// An implementation of [PigeonApiNSObject] used to add a new Dart instance of + /// `NSObject` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiNSObject(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiNSObject +} + +open class CLGeocoderLibraryPigeonProxyApiRegistrar { + let binaryMessenger: FlutterBinaryMessenger + let apiDelegate: CLGeocoderLibraryPigeonProxyApiDelegate + let instanceManager: CLGeocoderLibraryPigeonInstanceManager + /// Whether APIs should ignore calling to Dart. + public var ignoreCallsToDart = false + private var _codec: FlutterStandardMessageCodec? + var codec: FlutterStandardMessageCodec { + if _codec == nil { + _codec = FlutterStandardMessageCodec( + readerWriter: CLGeocoderLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: self)) + } + return _codec! + } + + private class InstanceManagerApiFinalizerDelegate: CLGeocoderLibraryPigeonInternalFinalizerDelegate { + let api: CLGeocoderLibraryPigeonInstanceManagerApi + + init(_ api: CLGeocoderLibraryPigeonInstanceManagerApi) { + self.api = api + } + + public func onDeinit(identifier: Int64) { + api.removeStrongReference(identifier: identifier) { + _ in + } + } + } + + init(binaryMessenger: FlutterBinaryMessenger, apiDelegate: CLGeocoderLibraryPigeonProxyApiDelegate) { + self.binaryMessenger = binaryMessenger + self.apiDelegate = apiDelegate + self.instanceManager = CLGeocoderLibraryPigeonInstanceManager( + finalizerDelegate: InstanceManagerApiFinalizerDelegate( + CLGeocoderLibraryPigeonInstanceManagerApi(binaryMessenger: binaryMessenger))) + } + + func setUp() { + CLGeocoderLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger: binaryMessenger, instanceManager: instanceManager) + PigeonApiCLGeocoder.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiCLGeocoder(self)) + PigeonApiCLLocation.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiCLLocation(self)) + PigeonApiLocale.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiLocale(self)) + PigeonApiNSObject.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiNSObject(self)) + } + func tearDown() { + CLGeocoderLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger: binaryMessenger, instanceManager: nil) + PigeonApiCLGeocoder.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) + PigeonApiCLLocation.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) + PigeonApiLocale.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) + PigeonApiNSObject.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) + } +} +private class CLGeocoderLibraryPigeonInternalProxyApiCodecReaderWriter: FlutterStandardReaderWriter { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + + private class CLGeocoderLibraryPigeonInternalProxyApiCodecReader: CLGeocoderLibraryPigeonCodecReader { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + + init(data: Data, pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar) { + self.pigeonRegistrar = pigeonRegistrar + super.init(data: data) + } + + override func readValue(ofType type: UInt8) -> Any? { + switch type { + case 128: + let identifier = self.readValue() + let instance: AnyObject? = pigeonRegistrar.instanceManager.instance( + forIdentifier: identifier is Int64 ? identifier as! Int64 : Int64(identifier as! Int32)) + if instance == nil { + print("Failed to find instance with identifier: \(identifier!)") + } + return instance + default: + return super.readValue(ofType: type) + } + } + } + + private class CLGeocoderLibraryPigeonInternalProxyApiCodecWriter: CLGeocoderLibraryPigeonCodecWriter { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + + init(data: NSMutableData, pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar) { + self.pigeonRegistrar = pigeonRegistrar + super.init(data: data) + } + + override func writeValue(_ value: Any) { + if value is [Any] || value is Bool || value is Data || value is [AnyHashable: Any] || value is Double || value is FlutterStandardTypedData || value is Int64 || value is String || value is KeyValueObservingOptions || value is KeyValueChange || value is KeyValueChangeKey { + super.writeValue(value) + return + } + + + if let instance = value as? CLFloor { + pigeonRegistrar.apiDelegate.pigeonApiCLFloor(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? CLGeocoder { + pigeonRegistrar.apiDelegate.pigeonApiCLGeocoder(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? CLLocation { + pigeonRegistrar.apiDelegate.pigeonApiCLLocation(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? CLLocationCoordinate2DWrapper { + pigeonRegistrar.apiDelegate.pigeonApiCLLocationCoordinate2D(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if #available(iOS 15.0.0, macOS 12.0.0, *), let instance = value as? CLLocationSourceInformation { + pigeonRegistrar.apiDelegate.pigeonApiCLLocationSourceInformation(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? CLPlacemark { + pigeonRegistrar.apiDelegate.pigeonApiCLPlacemark(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? CNPostalAddress { + pigeonRegistrar.apiDelegate.pigeonApiCNPostalAddress(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? LocaleWrapper { + pigeonRegistrar.apiDelegate.pigeonApiLocale(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as? NSObject { + pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + return + } + + + if let instance = value as AnyObject?, pigeonRegistrar.instanceManager.containsInstance(instance) + { + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance)!) + } else { + print("Unsupported value: \(value) of \(type(of: value))") + assert(false, "Unsupported value for CLGeocoderLibraryPigeonInternalProxyApiCodecWriter") + } + + } + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar) { + self.pigeonRegistrar = pigeonRegistrar + } + + override func reader(with data: Data) -> FlutterStandardReader { + return CLGeocoderLibraryPigeonInternalProxyApiCodecReader(data: data, pigeonRegistrar: pigeonRegistrar) + } + + override func writer(with data: NSMutableData) -> FlutterStandardWriter { + return CLGeocoderLibraryPigeonInternalProxyApiCodecWriter(data: data, pigeonRegistrar: pigeonRegistrar) + } +} + +/// The values that can be returned in a change dictionary. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions. +enum KeyValueObservingOptions: Int { + /// Indicates that the change dictionary should provide the new attribute + /// value, if applicable. + case newValue = 0 + /// Indicates that the change dictionary should contain the old attribute + /// value, if applicable. + case oldValue = 1 + /// If specified, a notification should be sent to the observer immediately, + /// before the observer registration method even returns. + case initialValue = 2 + /// Whether separate notifications should be sent to the observer before and + /// after each change, instead of a single notification after the change. + case priorNotification = 3 +} + +/// The kinds of changes that can be observed. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvaluechange. +enum KeyValueChange: Int { + /// Indicates that the value of the observed key path was set to a new value. + case setting = 0 + /// Indicates that an object has been inserted into the to-many relationship + /// that is being observed. + case insertion = 1 + /// Indicates that an object has been removed from the to-many relationship + /// that is being observed. + case removal = 2 + /// Indicates that an object has been replaced in the to-many relationship + /// that is being observed. + case replacement = 3 + /// The value is not recognized by the wrapper. + case unknown = 4 +} + +/// The keys that can appear in the change dictionary. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvaluechangekey. +enum KeyValueChangeKey: Int { + /// If the value of the `KeyValueChangeKey.kind` entry is + /// `KeyValueChange.insertion`, `KeyValueChange.removal`, or + /// `KeyValueChange.replacement`, the value of this key is a Set object that + /// contains the indexes of the inserted, removed, or replaced objects. + case indexes = 0 + /// An object that contains a value corresponding to one of the + /// `KeyValueChange` enum, indicating what sort of change has occurred. + case kind = 1 + /// If the value of the `KeyValueChange.kind` entry is + /// `KeyValueChange.setting, and `KeyValueObservingOptions.newValue` was + /// specified when the observer was registered, the value of this key is the + /// new value for the attribute. + case newValue = 2 + /// If the `KeyValueObservingOptions.priorNotification` option was specified + /// when the observer was registered this notification is sent prior to a + /// change. + case notificationIsPrior = 3 + /// If the value of the `KeyValueChange.kind` entry is + /// `KeyValueChange.setting`, and `KeyValueObservingOptions.old` was specified + /// when the observer was registered, the value of this key is the value + /// before the attribute was changed. + case oldValue = 4 + /// The value is not recognized by the wrapper. + case unknown = 5 +} + +private class CLGeocoderLibraryPigeonCodecReader: FlutterStandardReader { + override func readValue(ofType type: UInt8) -> Any? { + switch type { + case 129: + let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) + if let enumResultAsInt = enumResultAsInt { + return KeyValueObservingOptions(rawValue: enumResultAsInt) + } + return nil + case 130: + let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) + if let enumResultAsInt = enumResultAsInt { + return KeyValueChange(rawValue: enumResultAsInt) + } + return nil + case 131: + let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) + if let enumResultAsInt = enumResultAsInt { + return KeyValueChangeKey(rawValue: enumResultAsInt) + } + return nil + default: + return super.readValue(ofType: type) + } + } +} + +private class CLGeocoderLibraryPigeonCodecWriter: FlutterStandardWriter { + override func writeValue(_ value: Any) { + if let value = value as? KeyValueObservingOptions { + super.writeByte(129) + super.writeValue(value.rawValue) + } else if let value = value as? KeyValueChange { + super.writeByte(130) + super.writeValue(value.rawValue) + } else if let value = value as? KeyValueChangeKey { + super.writeByte(131) + super.writeValue(value.rawValue) + } else { + super.writeValue(value) + } + } +} + +private class CLGeocoderLibraryPigeonCodecReaderWriter: FlutterStandardReaderWriter { + override func reader(with data: Data) -> FlutterStandardReader { + return CLGeocoderLibraryPigeonCodecReader(data: data) + } + + override func writer(with data: NSMutableData) -> FlutterStandardWriter { + return CLGeocoderLibraryPigeonCodecWriter(data: data) + } +} + +class CLGeocoderLibraryPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { + static let shared = CLGeocoderLibraryPigeonCodec(readerWriter: CLGeocoderLibraryPigeonCodecReaderWriter()) +} + +protocol PigeonApiDelegateCLFloor { + /// The logical floor of the building. + func level(pigeonApi: PigeonApiCLFloor, pigeonInstance: CLFloor) throws -> Int64 +} + +protocol PigeonApiProtocolCLFloor { +} + +final class PigeonApiCLFloor: PigeonApiProtocolCLFloor { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCLFloor + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCLFloor) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of CLFloor and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: CLFloor, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let levelArg = try! pigeonDelegate.level(pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CLFloor.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, levelArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateCLGeocoder { + /// Creates a [CLGeocoder]. + func pigeonDefaultConstructor(pigeonApi: PigeonApiCLGeocoder) throws -> CLGeocoder + /// Submits a forward-geocoding requesting using the specified address string + /// and locale information. + func geocodeAddressString(pigeonApi: PigeonApiCLGeocoder, pigeonInstance: CLGeocoder, address: String, locale: LocaleWrapper?, completion: @escaping (Result<[CLPlacemark]?, Error>) -> Void) + /// Submits a forward-geocoding requesting using the specified locale and + /// Contacts framework information. + func geocodePostalAddress(pigeonApi: PigeonApiCLGeocoder, pigeonInstance: CLGeocoder, postalAddress: CNPostalAddress, locale: LocaleWrapper?, completion: @escaping (Result<[CLPlacemark]?, Error>) -> Void) + /// Submits a reverse-geocoding request for the specified location. + func reverseGeocodeLocation(pigeonApi: PigeonApiCLGeocoder, pigeonInstance: CLGeocoder, location: CLLocation, locale: LocaleWrapper?, completion: @escaping (Result<[CLPlacemark]?, Error>) -> Void) +} + +protocol PigeonApiProtocolCLGeocoder { +} + +final class PigeonApiCLGeocoder: PigeonApiProtocolCLGeocoder { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCLGeocoder + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCLGeocoder) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiCLGeocoder?) { + let codec: FlutterStandardMessageCodec = + api != nil + ? FlutterStandardMessageCodec( + readerWriter: CLGeocoderLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + : FlutterStandardMessageCodec.sharedInstance() + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLGeocoder.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + pigeonDefaultConstructorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonIdentifierArg = args[0] as! Int64 + do { + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + pigeonDefaultConstructorChannel.setMessageHandler(nil) + } + let geocodeAddressStringChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLGeocoder.geocodeAddressString", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + geocodeAddressStringChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLGeocoder + let addressArg = args[1] as! String + let localeArg: LocaleWrapper? = nilOrValue(args[2]) + api.pigeonDelegate.geocodeAddressString(pigeonApi: api, pigeonInstance: pigeonInstanceArg, address: addressArg, locale: localeArg) { result in + switch result { + case .success(let res): + reply(wrapResult(res)) + case .failure(let error): + reply(wrapError(error)) + } + } + } + } else { + geocodeAddressStringChannel.setMessageHandler(nil) + } + let geocodePostalAddressChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLGeocoder.geocodePostalAddress", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + geocodePostalAddressChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLGeocoder + let postalAddressArg = args[1] as! CNPostalAddress + let localeArg: LocaleWrapper? = nilOrValue(args[2]) + api.pigeonDelegate.geocodePostalAddress(pigeonApi: api, pigeonInstance: pigeonInstanceArg, postalAddress: postalAddressArg, locale: localeArg) { result in + switch result { + case .success(let res): + reply(wrapResult(res)) + case .failure(let error): + reply(wrapError(error)) + } + } + } + } else { + geocodePostalAddressChannel.setMessageHandler(nil) + } + let reverseGeocodeLocationChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLGeocoder.reverseGeocodeLocation", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + reverseGeocodeLocationChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLGeocoder + let locationArg = args[1] as! CLLocation + let localeArg: LocaleWrapper? = nilOrValue(args[2]) + api.pigeonDelegate.reverseGeocodeLocation(pigeonApi: api, pigeonInstance: pigeonInstanceArg, location: locationArg, locale: localeArg) { result in + switch result { + case .success(let res): + reply(wrapResult(res)) + case .failure(let error): + reply(wrapError(error)) + } + } + } + } else { + reverseGeocodeLocationChannel.setMessageHandler(nil) + } + } + + ///Creates a Dart instance of CLGeocoder and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: CLGeocoder, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CLGeocoder.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateCLLocation { + /// Creates a [CLLocation] based on the supplied coordinates. + func pigeonDefaultConstructor(pigeonApi: PigeonApiCLLocation, latitude: Double, longitude: Double) throws -> CLLocation + /// The geographical coordinate information. + func getCoordinate(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> CLLocationCoordinate2DWrapper + /// The altitude above mean sea level associated with a location, measured in + /// meters. + func getAltitude(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The altitude as a height above the World Geodetic System 1984 (WGS84) + /// ellipsoid, measured in meters. + func getEllipsoidalAltitude(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The logical floor of the building in which the user is located. + func getFloor(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> CLFloor? + /// The time at which this location was determined (in seconds since epoch). + func getTimestamp(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Int64 + /// Information about the source that provides the location. + @available(iOS 15.0.0, macOS 12.0.0, *) + func getSourceInformation(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> CLLocationSourceInformation? + /// The radius of uncertainty for the location, measured in meters. + func getHorizontalAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The validity of the altitude values, and their estimated uncertainty, + /// measured in meters. + func getVerticalAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The instantaneous speed of the device, measured in meters per second. + func getSpeed(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The accuracy of the speed value, measured in meters per second. + func getSpeedAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The direction in which the device is traveling, measured in degrees and + /// relative to due north. + func getCourse(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// The accuracy of the course value, measured in degrees. + func getCourseAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double + /// Returns the distance (measured in meters) from the current object’s + /// location to the specified location. + func distance(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation, from: CLLocation) throws -> Double +} + +protocol PigeonApiProtocolCLLocation { +} + +final class PigeonApiCLLocation: PigeonApiProtocolCLLocation { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCLLocation + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCLLocation) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiCLLocation?) { + let codec: FlutterStandardMessageCodec = + api != nil + ? FlutterStandardMessageCodec( + readerWriter: CLGeocoderLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + : FlutterStandardMessageCodec.sharedInstance() + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + pigeonDefaultConstructorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonIdentifierArg = args[0] as! Int64 + let latitudeArg = args[1] as! Double + let longitudeArg = args[2] as! Double + do { + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, latitude: latitudeArg, longitude: longitudeArg), +withIdentifier: pigeonIdentifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + pigeonDefaultConstructorChannel.setMessageHandler(nil) + } + let getCoordinateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getCoordinate", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getCoordinateChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getCoordinate(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getCoordinateChannel.setMessageHandler(nil) + } + let getAltitudeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getAltitude", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getAltitudeChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getAltitude(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getAltitudeChannel.setMessageHandler(nil) + } + let getEllipsoidalAltitudeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getEllipsoidalAltitude", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getEllipsoidalAltitudeChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getEllipsoidalAltitude(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getEllipsoidalAltitudeChannel.setMessageHandler(nil) + } + let getFloorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getFloor", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getFloorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getFloor(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getFloorChannel.setMessageHandler(nil) + } + let getTimestampChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getTimestamp", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getTimestampChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getTimestamp(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getTimestampChannel.setMessageHandler(nil) + } + if #available(iOS 15.0.0, macOS 12.0.0, *) { + let getSourceInformationChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getSourceInformation", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getSourceInformationChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getSourceInformation(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getSourceInformationChannel.setMessageHandler(nil) + } + } else { + let getSourceInformationChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getSourceInformation", + binaryMessenger: binaryMessenger, codec: codec) + if api != nil { + getSourceInformationChannel.setMessageHandler { message, reply in + reply(wrapError(FlutterError(code: "PigeonUnsupportedOperationError", + message: "Call to getSourceInformation requires @available(iOS 15.0.0, macOS 12.0.0, *).", + details: nil + ))) + } + } else { + getSourceInformationChannel.setMessageHandler(nil) + } + } + let getHorizontalAccuracyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getHorizontalAccuracy", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getHorizontalAccuracyChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getHorizontalAccuracy(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getHorizontalAccuracyChannel.setMessageHandler(nil) + } + let getVerticalAccuracyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getVerticalAccuracy", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getVerticalAccuracyChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getVerticalAccuracy(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getVerticalAccuracyChannel.setMessageHandler(nil) + } + let getSpeedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getSpeed", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getSpeedChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getSpeed(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getSpeedChannel.setMessageHandler(nil) + } + let getSpeedAccuracyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getSpeedAccuracy", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getSpeedAccuracyChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getSpeedAccuracy(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getSpeedAccuracyChannel.setMessageHandler(nil) + } + let getCourseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getCourse", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getCourseChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getCourse(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getCourseChannel.setMessageHandler(nil) + } + let getCourseAccuracyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.getCourseAccuracy", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getCourseAccuracyChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + do { + let result = try api.pigeonDelegate.getCourseAccuracy(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getCourseAccuracyChannel.setMessageHandler(nil) + } + let distanceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.CLLocation.distance", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + distanceChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! CLLocation + let fromArg = args[1] as! CLLocation + do { + let result = try api.pigeonDelegate.distance(pigeonApi: api, pigeonInstance: pigeonInstanceArg, from: fromArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + distanceChannel.setMessageHandler(nil) + } + } + + ///Creates a Dart instance of CLLocation and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: CLLocation, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CLLocation.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateCLLocationCoordinate2D { + /// The latitude in degrees. + func latitude(pigeonApi: PigeonApiCLLocationCoordinate2D, pigeonInstance: CLLocationCoordinate2DWrapper) throws -> Double + /// The longitude in degrees. + func longitude(pigeonApi: PigeonApiCLLocationCoordinate2D, pigeonInstance: CLLocationCoordinate2DWrapper) throws -> Double +} + +protocol PigeonApiProtocolCLLocationCoordinate2D { +} + +final class PigeonApiCLLocationCoordinate2D: PigeonApiProtocolCLLocationCoordinate2D { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCLLocationCoordinate2D + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCLLocationCoordinate2D) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of CLLocationCoordinate2D and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: CLLocationCoordinate2DWrapper, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let latitudeArg = try! pigeonDelegate.latitude(pigeonApi: self, pigeonInstance: pigeonInstance) + let longitudeArg = try! pigeonDelegate.longitude(pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CLLocationCoordinate2D.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, latitudeArg, longitudeArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateCLLocationSourceInformation { + /// A Boolean value that indicates whether the system receives the location + /// from an external accessory. + @available(iOS 15.0.0, macOS 12.0.0, *) + func isProducedByAccessory(pigeonApi: PigeonApiCLLocationSourceInformation, pigeonInstance: CLLocationSourceInformation) throws -> Bool + /// A Boolean value that indicates whether the system generates the location + /// using on-device software simulation. + @available(iOS 15.0.0, macOS 12.0.0, *) + func isSimulatedBySoftware(pigeonApi: PigeonApiCLLocationSourceInformation, pigeonInstance: CLLocationSourceInformation) throws -> Bool +} + +protocol PigeonApiProtocolCLLocationSourceInformation { +} + +final class PigeonApiCLLocationSourceInformation: PigeonApiProtocolCLLocationSourceInformation { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCLLocationSourceInformation + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCLLocationSourceInformation) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of CLLocationSourceInformation and attaches it to [pigeonInstance]. + @available(iOS 15.0.0, macOS 12.0.0, *) + func pigeonNewInstance(pigeonInstance: CLLocationSourceInformation, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let isProducedByAccessoryArg = try! pigeonDelegate.isProducedByAccessory(pigeonApi: self, pigeonInstance: pigeonInstance) + let isSimulatedBySoftwareArg = try! pigeonDelegate.isSimulatedBySoftware(pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CLLocationSourceInformation.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, isProducedByAccessoryArg, isSimulatedBySoftwareArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateCLPlacemark { + /// The [CLLocation] containing latitude and longitude information. + func location(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> CLLocation? + /// The name of the placemark. + func name(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The street address associated with the placemark. + func thoroughfare(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// Additional street-level information for the placemark. + func subThoroughfare(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The city associated with the placemark. + func locality(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// Additional city-level information for the placemark. + func subLocality(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The state or province associated with the placemark. + func administrativeArea(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// Additional administrative area information for the placemark. + func subAdministrativeArea(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The postal code associated with the placemark. + func postalCode(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The abbreviated country or region name. + func isoCountryCode(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The name of the country or region associated with the placemark. + func country(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? + /// The postal address associated with the location, formatted for use with the Contacts framework. + func postalAddress(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> CNPostalAddress? +} + +protocol PigeonApiProtocolCLPlacemark { +} + +final class PigeonApiCLPlacemark: PigeonApiProtocolCLPlacemark { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCLPlacemark + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCLPlacemark) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of CLPlacemark and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: CLPlacemark, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let locationArg = try! pigeonDelegate.location(pigeonApi: self, pigeonInstance: pigeonInstance) + let nameArg = try! pigeonDelegate.name(pigeonApi: self, pigeonInstance: pigeonInstance) + let thoroughfareArg = try! pigeonDelegate.thoroughfare(pigeonApi: self, pigeonInstance: pigeonInstance) + let subThoroughfareArg = try! pigeonDelegate.subThoroughfare(pigeonApi: self, pigeonInstance: pigeonInstance) + let localityArg = try! pigeonDelegate.locality(pigeonApi: self, pigeonInstance: pigeonInstance) + let subLocalityArg = try! pigeonDelegate.subLocality(pigeonApi: self, pigeonInstance: pigeonInstance) + let administrativeAreaArg = try! pigeonDelegate.administrativeArea(pigeonApi: self, pigeonInstance: pigeonInstance) + let subAdministrativeAreaArg = try! pigeonDelegate.subAdministrativeArea(pigeonApi: self, pigeonInstance: pigeonInstance) + let postalCodeArg = try! pigeonDelegate.postalCode(pigeonApi: self, pigeonInstance: pigeonInstance) + let isoCountryCodeArg = try! pigeonDelegate.isoCountryCode(pigeonApi: self, pigeonInstance: pigeonInstance) + let countryArg = try! pigeonDelegate.country(pigeonApi: self, pigeonInstance: pigeonInstance) + let postalAddressArg = try! pigeonDelegate.postalAddress(pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CLPlacemark.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, locationArg, nameArg, thoroughfareArg, subThoroughfareArg, localityArg, subLocalityArg, administrativeAreaArg, subAdministrativeAreaArg, postalCodeArg, isoCountryCodeArg, countryArg, postalAddressArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateCNPostalAddress { + /// The street name in a postal address. + func street(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// The city name in a postal address. + func city(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// The state name in a postal address. + func state(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// The postal code in a postal address. + func postalCode(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// The country or region name in a postal address. + func country(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// The ISO country code for the country or region in a postal address, using + /// the ISO 3166-1 alpha-2 standard. + func isoCountryCode(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// The subadministrative area (such as a county or other region) in a postal + /// address. + func subAdministrativeArea(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String + /// Additional information associated with the location, typically defined at + /// the city or town level, in a postal address. + func subLocality(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String +} + +protocol PigeonApiProtocolCNPostalAddress { +} + +final class PigeonApiCNPostalAddress: PigeonApiProtocolCNPostalAddress { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateCNPostalAddress + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateCNPostalAddress) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of CNPostalAddress and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: CNPostalAddress, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let streetArg = try! pigeonDelegate.street(pigeonApi: self, pigeonInstance: pigeonInstance) + let cityArg = try! pigeonDelegate.city(pigeonApi: self, pigeonInstance: pigeonInstance) + let stateArg = try! pigeonDelegate.state(pigeonApi: self, pigeonInstance: pigeonInstance) + let postalCodeArg = try! pigeonDelegate.postalCode(pigeonApi: self, pigeonInstance: pigeonInstance) + let countryArg = try! pigeonDelegate.country(pigeonApi: self, pigeonInstance: pigeonInstance) + let isoCountryCodeArg = try! pigeonDelegate.isoCountryCode(pigeonApi: self, pigeonInstance: pigeonInstance) + let subAdministrativeAreaArg = try! pigeonDelegate.subAdministrativeArea(pigeonApi: self, pigeonInstance: pigeonInstance) + let subLocalityArg = try! pigeonDelegate.subLocality(pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, streetArg, cityArg, stateArg, postalCodeArg, countryArg, isoCountryCodeArg, subAdministrativeAreaArg, subLocalityArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateLocale { + /// Creates a [Locale] matching the given identifier. + func pigeonDefaultConstructor(pigeonApi: PigeonApiLocale, identifier: String) throws -> LocaleWrapper + /// The identifier of the locale. + func getIdentifier(pigeonApi: PigeonApiLocale, pigeonInstance: LocaleWrapper) throws -> String +} + +protocol PigeonApiProtocolLocale { +} + +final class PigeonApiLocale: PigeonApiProtocolLocale { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateLocale + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateLocale) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiLocale?) { + let codec: FlutterStandardMessageCodec = + api != nil + ? FlutterStandardMessageCodec( + readerWriter: CLGeocoderLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + : FlutterStandardMessageCodec.sharedInstance() + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.Locale.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + pigeonDefaultConstructorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonIdentifierArg = args[0] as! Int64 + let identifierArg = args[1] as! String + do { + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, identifier: identifierArg), +withIdentifier: pigeonIdentifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + pigeonDefaultConstructorChannel.setMessageHandler(nil) + } + let getIdentifierChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.Locale.getIdentifier", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getIdentifierChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! LocaleWrapper + do { + let result = try api.pigeonDelegate.getIdentifier(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + getIdentifierChannel.setMessageHandler(nil) + } + } + + ///Creates a Dart instance of Locale and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: LocaleWrapper, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.Locale.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateNSObject { + func pigeonDefaultConstructor(pigeonApi: PigeonApiNSObject) throws -> NSObject + /// Registers the observer object to receive KVO notifications for the key + /// path relative to the object receiving this message. + func addObserver(pigeonApi: PigeonApiNSObject, pigeonInstance: NSObject, observer: NSObject, keyPath: String, options: [KeyValueObservingOptions]) throws + /// Stops the observer object from receiving change notifications for the + /// property specified by the key path relative to the object receiving this + /// message. + func removeObserver(pigeonApi: PigeonApiNSObject, pigeonInstance: NSObject, observer: NSObject, keyPath: String) throws +} + +protocol PigeonApiProtocolNSObject { + /// Informs the observing object when the value at the specified key path + /// relative to the observed object has changed. + func observeValue(pigeonInstance pigeonInstanceArg: NSObject, keyPath keyPathArg: String?, object objectArg: NSObject?, change changeArg: [KeyValueChangeKey: Any?]?, completion: @escaping (Result) -> Void) +} + +final class PigeonApiNSObject: PigeonApiProtocolNSObject { + unowned let pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateNSObject + init(pigeonRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateNSObject) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiNSObject?) { + let codec: FlutterStandardMessageCodec = + api != nil + ? FlutterStandardMessageCodec( + readerWriter: CLGeocoderLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + : FlutterStandardMessageCodec.sharedInstance() + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.NSObject.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + pigeonDefaultConstructorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonIdentifierArg = args[0] as! Int64 + do { + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + pigeonDefaultConstructorChannel.setMessageHandler(nil) + } + let addObserverChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.NSObject.addObserver", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + addObserverChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! NSObject + let observerArg = args[1] as! NSObject + let keyPathArg = args[2] as! String + let optionsArg = args[3] as! [KeyValueObservingOptions] + do { + try api.pigeonDelegate.addObserver(pigeonApi: api, pigeonInstance: pigeonInstanceArg, observer: observerArg, keyPath: keyPathArg, options: optionsArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + addObserverChannel.setMessageHandler(nil) + } + let removeObserverChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.geocoding_darwin.NSObject.removeObserver", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + removeObserverChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! NSObject + let observerArg = args[1] as! NSObject + let keyPathArg = args[2] as! String + do { + try api.pigeonDelegate.removeObserver(pigeonApi: api, pigeonInstance: pigeonInstanceArg, observer: observerArg, keyPath: keyPathArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + removeObserverChannel.setMessageHandler(nil) + } + } + + ///Creates a Dart instance of NSObject and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: NSObject, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.NSObject.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } + /// Informs the observing object when the value at the specified key path + /// relative to the observed object has changed. + func observeValue(pigeonInstance pigeonInstanceArg: NSObject, keyPath keyPathArg: String?, object objectArg: NSObject?, change changeArg: [KeyValueChangeKey: Any?]?, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + return + } + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.geocoding_darwin.NSObject.observeValue" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonInstanceArg, keyPathArg, objectArg, changeArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderProxyApiDelegate.swift new file mode 100644 index 0000000..447bcd4 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderProxyApiDelegate.swift @@ -0,0 +1,48 @@ +import CoreLocation +import Contacts + +/// ProxyApi implementation for `CLGeocoder`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CLGeocoderProxyApiDelegate: PigeonApiDelegateCLGeocoder { + func pigeonDefaultConstructor(pigeonApi: PigeonApiCLGeocoder) throws -> CLGeocoder { + return CLGeocoder() + } + + func geocodeAddressString(pigeonApi: PigeonApiCLGeocoder, pigeonInstance: CLGeocoder, address: String, locale: LocaleWrapper?, completion: @escaping (Result<[CLPlacemark]?, any Error>) -> Void) { + pigeonInstance.geocodeAddressString(address, in: nil, preferredLocale: locale?.value) { placemarks, error in + if error != nil { + let error = PigeonError(code: "GeocodeAddressError", message: "Failed to geocode address.", details: error! as NSError) + completion(.failure(error)) + return + } + + completion(.success(placemarks)) + } + } + + func geocodePostalAddress(pigeonApi: PigeonApiCLGeocoder, pigeonInstance: CLGeocoder, postalAddress: CNPostalAddress, locale: LocaleWrapper?, completion: @escaping (Result<[CLPlacemark]?, any Error>) -> Void) { + pigeonInstance.geocodePostalAddress(postalAddress, preferredLocale: locale?.value) { placemarks, error in + if error != nil { + let error = PigeonError(code: "GeocodeAddressError", message: "Failed to geocode address.", details: error! as NSError) + completion(.failure(error)) + return + } + + completion(.success(placemarks)) + } + } + + func reverseGeocodeLocation(pigeonApi: PigeonApiCLGeocoder, pigeonInstance: CLGeocoder, location: CLLocation, locale: LocaleWrapper?, completion: @escaping (Result<[CLPlacemark]?, any Error>) -> Void) { + pigeonInstance.reverseGeocodeLocation(location, preferredLocale: locale?.value) { placemarks, error in + if error != nil { + let error = PigeonError(code: "GeocodeAddressError", message: "Failed to geocode address.", details: error! as NSError) + completion(.failure(error)) + return + } + + completion(.success(placemarks)) + } + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationCoordinate2DProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationCoordinate2DProxyApiDelegate.swift new file mode 100644 index 0000000..e0e64d1 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationCoordinate2DProxyApiDelegate.swift @@ -0,0 +1,17 @@ +import CoreLocation + +/// ProxyApi implementation for `CLLocationCoordinate2D`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CLLocationCoordinate2DProxyApiDelegate: PigeonApiDelegateCLLocationCoordinate2D { + func latitude(pigeonApi: PigeonApiCLLocationCoordinate2D, pigeonInstance: CLLocationCoordinate2DWrapper) throws + -> Double { + return pigeonInstance.value.latitude + } + + func longitude(pigeonApi: PigeonApiCLLocationCoordinate2D, pigeonInstance: CLLocationCoordinate2DWrapper) throws + -> Double { + return pigeonInstance.value.longitude + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationProxyApiDelegate.swift new file mode 100644 index 0000000..3e1d147 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationProxyApiDelegate.swift @@ -0,0 +1,76 @@ +import CoreLocation + +/// ProxyApi implementation for `CLLocation`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CLLocationProxyApiDelegate: PigeonApiDelegateCLLocation { + func pigeonDefaultConstructor(pigeonApi: PigeonApiCLLocation, latitude: Double, longitude: Double) throws -> CLLocation { + return CLLocation(latitude: latitude, longitude: longitude) + } + + func getCoordinate(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> CLLocationCoordinate2DWrapper { + return CLLocationCoordinate2DWrapper(pigeonInstance.coordinate) + } + + func getAltitude(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + return pigeonInstance.altitude + } + + func getEllipsoidalAltitude(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + if #available(iOS 15.0, macOS 12.0, *) { + return pigeonInstance.ellipsoidalAltitude + } else { + throw (pigeonApi.pigeonRegistrar as! ProxyApiRegistrar).createUnsupportedVersionError( + method: "CLLocation.ellipsoidalAltitude", + versionRequirements: "iOS 15.0, macOS 12.0") + } + } + + func getFloor(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> CLFloor? { + return pigeonInstance.floor + } + + func getTimestamp(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Int64 { + return Int64(pigeonInstance.timestamp.timeIntervalSince1970 * 1000) + } + + @available(iOS 15.0, macOS 12.0, *) + func getSourceInformation(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> CLLocationSourceInformation? { + return pigeonInstance.sourceInformation + } + + func getHorizontalAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + return pigeonInstance.horizontalAccuracy + } + + func getVerticalAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + return pigeonInstance.verticalAccuracy + } + + func getSpeed(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + return pigeonInstance.speed + } + + func getSpeedAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + return pigeonInstance.speedAccuracy + } + + func getCourse(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + return pigeonInstance.course + } + + func getCourseAccuracy(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation) throws -> Double { + if #available(iOS 13.4, macOS 10.15.4, *) { + return pigeonInstance.courseAccuracy + } else { + throw (pigeonApi.pigeonRegistrar as! ProxyApiRegistrar).createUnsupportedVersionError( + method: "CLLocation.sourceInformation", + versionRequirements: "iOS 13.4, macOS 10.15.4") + } + } + + func distance(pigeonApi: PigeonApiCLLocation, pigeonInstance: CLLocation, from: CLLocation) throws -> Double { + return pigeonInstance.distance(from: from) + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationSourceInformationProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationSourceInformationProxyApiDelegate.swift new file mode 100644 index 0000000..db15c82 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationSourceInformationProxyApiDelegate.swift @@ -0,0 +1,17 @@ +import CoreLocation + +/// ProxyApi implementation for `CLLocationSourceInformation`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CLLocationSourceInformationProxyApiDelegate: PigeonApiDelegateCLLocationSourceInformation { + @available(iOS 15.0, macOS 12.0, *) + func isProducedByAccessory(pigeonApi: PigeonApiCLLocationSourceInformation, pigeonInstance: CLLocationSourceInformation) throws -> Bool { + return pigeonInstance.isProducedByAccessory + } + + @available(iOS 15.0, macOS 12.0, *) + func isSimulatedBySoftware(pigeonApi: PigeonApiCLLocationSourceInformation, pigeonInstance: CLLocationSourceInformation) throws -> Bool { + return pigeonInstance.isSimulatedBySoftware + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLPlacemarkProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLPlacemarkProxyApiDelegate.swift new file mode 100644 index 0000000..5b5722b --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLPlacemarkProxyApiDelegate.swift @@ -0,0 +1,58 @@ +import CoreLocation +import Contacts + +/// ProxyApi implementation for `CLPlacemark`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CLPlacemarkProxyApiDelegate: PigeonApiDelegateCLPlacemark { + + func location(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> CLLocation? { + return pigeonInstance.location + } + + func name(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.name + } + + func thoroughfare(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.thoroughfare + } + + func subThoroughfare(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.subThoroughfare + } + + func locality(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.locality + } + + func subLocality(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.subLocality + } + + func administrativeArea(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + pigeonInstance.administrativeArea + } + + func subAdministrativeArea(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.subAdministrativeArea + } + + func postalCode(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.postalCode + } + + func isoCountryCode(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.isoCountryCode + } + + func country(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> String? { + return pigeonInstance.country + } + + func postalAddress(pigeonApi: PigeonApiCLPlacemark, pigeonInstance: CLPlacemark) throws -> CNPostalAddress? { + return pigeonInstance.postalAddress + } + +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CNPostalAddressProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CNPostalAddressProxyApiDelegate.swift new file mode 100644 index 0000000..76bd5fc --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CNPostalAddressProxyApiDelegate.swift @@ -0,0 +1,39 @@ +import Contacts + +/// ProxyApi implementation for `CNPostalAddress`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class CNPostalAddressProxyApiDelegate: PigeonApiDelegateCNPostalAddress { + func street(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.street + } + + func city(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.city + } + + func state(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.state + } + + func postalCode(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.postalCode + } + + func country(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.country + } + + func isoCountryCode(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.isoCountryCode + } + + func subAdministrativeArea(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.subAdministrativeArea + } + + func subLocality(pigeonApi: PigeonApiCNPostalAddress, pigeonInstance: CNPostalAddress) throws -> String { + return pigeonInstance.subLocality + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/LocaleProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/LocaleProxyApiDelegate.swift new file mode 100644 index 0000000..4d51366 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/LocaleProxyApiDelegate.swift @@ -0,0 +1,16 @@ +import Foundation + +/// ProxyApi implementation for `Locale`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class LocaleProxyApiDelegate: PigeonApiDelegateLocale { + + func pigeonDefaultConstructor(pigeonApi: PigeonApiLocale, identifier: String) throws -> LocaleWrapper { + return LocaleWrapper(Locale(identifier: identifier)) + } + + func getIdentifier(pigeonApi: PigeonApiLocale, pigeonInstance: LocaleWrapper) throws -> String { + return pigeonInstance.value.identifier + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/NSObjectProxyApiDelegate.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/NSObjectProxyApiDelegate.swift new file mode 100644 index 0000000..49e3986 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/NSObjectProxyApiDelegate.swift @@ -0,0 +1,107 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import Foundation + +/// Implementation of `NSObject` that calls to Dart in callback methods. +class NSObjectImpl: NSObject { + let api: PigeonApiProtocolNSObject + unowned let registrar: ProxyApiRegistrar + + init(api: PigeonApiProtocolNSObject, registrar: ProxyApiRegistrar) { + self.api = api + self.registrar = registrar + } + + static func handleObserveValue( + withApi api: PigeonApiProtocolNSObject, registrar: ProxyApiRegistrar, instance: NSObject, + forKeyPath keyPath: String?, + of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer? + ) { + let wrapperKeys: [KeyValueChangeKey: Any]? + if change != nil { + let keyValueTuples = change!.map { key, value in + let newKey: KeyValueChangeKey + switch key { + case .kindKey: + newKey = .kind + case .indexesKey: + newKey = .indexes + case .newKey: + newKey = .newValue + case .oldKey: + newKey = .oldValue + case .notificationIsPriorKey: + newKey = .notificationIsPrior + default: + newKey = .unknown + } + + return (newKey, value) + } + + wrapperKeys = Dictionary(uniqueKeysWithValues: keyValueTuples) + } else { + wrapperKeys = nil + } + + registrar.dispatchOnMainThread { onFailure in + api.observeValue( + pigeonInstance: instance, keyPath: keyPath, object: object as? NSObject, change: wrapperKeys + ) { result in + if case .failure(let error) = result { + onFailure("NSObject.observeValue", error) + } + } + } + } + + override func observeValue( + forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, + context: UnsafeMutableRawPointer? + ) { + NSObjectImpl.handleObserveValue( + withApi: api, registrar: registrar, instance: self as NSObject, forKeyPath: keyPath, + of: object, change: change, + context: context) + } +} + +/// ProxyApi implementation for `NSObject`. +/// +/// This class may handle instantiating native object instances that are attached to a Dart instance +/// or handle method calls on the associated native class or an instance of that class. +class NSObjectProxyApiDelegate: PigeonApiDelegateNSObject { + func pigeonDefaultConstructor(pigeonApi: PigeonApiNSObject) throws -> NSObject { + return NSObjectImpl(api: pigeonApi, registrar: pigeonApi.pigeonRegistrar as! ProxyApiRegistrar) + } + + func addObserver( + pigeonApi: PigeonApiNSObject, pigeonInstance: NSObject, observer: NSObject, keyPath: String, + options: [KeyValueObservingOptions] + ) throws { + var nativeOptions: NSKeyValueObservingOptions = [] + + for option in options { + switch option { + case .newValue: + nativeOptions.insert(.new) + case .oldValue: + nativeOptions.insert(.old) + case .initialValue: + nativeOptions.insert(.initial) + case .priorNotification: + nativeOptions.insert(.prior) + } + } + + pigeonInstance.addObserver(observer, forKeyPath: keyPath, options: nativeOptions, context: nil) + } + + func removeObserver( + pigeonApi: PigeonApiNSObject, pigeonInstance: NSObject, observer: NSObject, keyPath: String + ) throws { + pigeonInstance.removeObserver(observer, forKeyPath: keyPath) + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/ProxyApiRegistrar.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/ProxyApiRegistrar.swift new file mode 100644 index 0000000..0c59fb1 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/ProxyApiRegistrar.swift @@ -0,0 +1,92 @@ +import Foundation + +#if os(iOS) + import Flutter + import UIKit +#elseif os(macOS) + import FlutterMacOS + import Foundation +#else + #error("Unsupported platform.") +#endif + +/// Implementation of the `CLGeocoderLibraryPigeonProxyApiRegistrar` that provides any addition resources needed by API implementations. +open class ProxyApiRegistrar: CLGeocoderLibraryPigeonProxyApiRegistrar { + init( + binaryMessenger: FlutterBinaryMessenger + ) { + super.init(binaryMessenger: binaryMessenger, apiDelegate: ProxyApiDelegate()) + } + + /// Creates an error when a method is called on an unsupported version. + func createUnsupportedVersionError(method: String, versionRequirements: String) -> PigeonError { + return PigeonError( + code: "FWFUnsupportedVersionError", + message: createUnsupportedVersionMessage(method, versionRequirements: versionRequirements), + details: nil) + } + + /// Creates the error message when a method is called on an unsupported version. + func createUnsupportedVersionMessage(_ method: String, versionRequirements: String) -> String { + return "`\(method)` requires \(versionRequirements)." + } + + // Creates an assertion failure when a Flutter method receives an error from Dart. + fileprivate func assertFlutterMethodFailure(_ error: PigeonError, methodName: String) { + assertionFailure( + "\(String(describing: error)): Error returned from calling \(methodName): \(String(describing: error.message))" + ) + } + + /// Handles calling a Flutter method on the main thread. + func dispatchOnMainThread( + execute work: @escaping ( + _ onFailure: @escaping (_ methodName: String, _ error: PigeonError) -> Void + ) -> Void + ) { + DispatchQueue.main.async { + work { methodName, error in + self.assertFlutterMethodFailure(error, methodName: methodName) + } + } + } +} + +/// Implementation of `CLGeocoderLibraryPigeonProxyApiDelegate` that provides each ProxyApi delegate implementation. +class ProxyApiDelegate: CLGeocoderLibraryPigeonProxyApiDelegate { + func pigeonApiCLGeocoder(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLGeocoder { + return PigeonApiCLGeocoder(pigeonRegistrar: registrar, delegate: CLGeocoderProxyApiDelegate()) + } + + func pigeonApiCLLocation(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLLocation { + return PigeonApiCLLocation(pigeonRegistrar: registrar, delegate: CLLocationProxyApiDelegate()) + } + + func pigeonApiCLLocationCoordinate2D(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLLocationCoordinate2D { + return PigeonApiCLLocationCoordinate2D(pigeonRegistrar: registrar, delegate: CLLocationCoordinate2DProxyApiDelegate()) + } + + func pigeonApiCLLocationSourceInformation(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLLocationSourceInformation { + return PigeonApiCLLocationSourceInformation(pigeonRegistrar: registrar, delegate: CLLocationSourceInformationProxyApiDelegate()) + } + + func pigeonApiCLPlacemark(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLPlacemark { + return PigeonApiCLPlacemark(pigeonRegistrar: registrar, delegate: CLPlacemarkProxyApiDelegate()) + } + + func pigeonApiCNPostalAddress(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCNPostalAddress { + return PigeonApiCNPostalAddress(pigeonRegistrar: registrar, delegate: CNPostalAddressProxyApiDelegate()) + } + + func pigeonApiLocale(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiLocale { + return PigeonApiLocale(pigeonRegistrar: registrar, delegate: LocaleProxyApiDelegate()) + } + + func pigeonApiNSObject(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiNSObject { + return PigeonApiNSObject(pigeonRegistrar: registrar, delegate: NSObjectProxyApiDelegate()) + } + + func pigeonApiCLFloor(_ registrar: CLGeocoderLibraryPigeonProxyApiRegistrar) -> PigeonApiCLFloor { + return PigeonApiCLFloor(pigeonRegistrar: registrar, delegate: CLFloorProxyApiDelegate()) + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/StructWrappers.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/StructWrappers.swift new file mode 100644 index 0000000..4d4e236 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/StructWrappers.swift @@ -0,0 +1,26 @@ +import CoreLocation +import Foundation + +/// Wrapper around `Locale`. +/// +/// Since `Locale` is a struct, it is pass by value instead of pass by reference. This makes +/// it not possible to modify the properties of a struct with the typical ProxyAPI system. +class LocaleWrapper { + var value: Locale + + init(_ value: Locale) { + self.value = value + } +} + +/// Wrapper around `CLLocationCoordinate2D`. +/// +/// Since `CLLocationCoordinates2D` is a struct, it is pass by value instead of pass by reference. This makes +/// it not possible to modify the properties of a struct with the typical ProxyAPI system. +class CLLocationCoordinate2DWrapper { + var value: CLLocationCoordinate2D + + init(_ value: CLLocationCoordinate2D) { + self.value = value + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/GeocodingDarwinPlugin.swift b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/GeocodingDarwinPlugin.swift new file mode 100644 index 0000000..42487a2 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/GeocodingDarwinPlugin.swift @@ -0,0 +1,32 @@ +#if os(iOS) + import Flutter +#elseif os(macOS) + import FlutterMacOS +#else + #error("Unsupported platform.") +#endif + +public class GeocodingDarwinPlugin: NSObject, FlutterPlugin { + var proxyApiRegistrar: ProxyApiRegistrar? + + init(binaryMessenger: FlutterBinaryMessenger) { + proxyApiRegistrar = ProxyApiRegistrar(binaryMessenger: binaryMessenger) + proxyApiRegistrar?.setUp() + } + + public static func register(with registrar: FlutterPluginRegistrar) { +#if os(iOS) + let binaryMessenger = registrar.messenger() +#else + let binaryMessenger = registrar.messenger +#endif + let plugin = GeocodingDarwinPlugin(binaryMessenger: binaryMessenger) + registrar.publish(plugin) + } + + public func detachFromEngine(for registrar: any FlutterPluginRegistrar) { + proxyApiRegistrar!.ignoreCallsToDart = true + proxyApiRegistrar!.tearDown() + proxyApiRegistrar = nil + } +} diff --git a/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..a34b7e2 --- /dev/null +++ b/geocoding_darwin/darwin/geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/geocoding_darwin/example/.gitignore b/geocoding_darwin/example/.gitignore new file mode 100644 index 0000000..79c113f --- /dev/null +++ b/geocoding_darwin/example/.gitignore @@ -0,0 +1,45 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/geocoding_darwin/example/README.md b/geocoding_darwin/example/README.md new file mode 100644 index 0000000..828b728 --- /dev/null +++ b/geocoding_darwin/example/README.md @@ -0,0 +1,16 @@ +# geocoding_darwin_example + +Demonstrates how to use the geocoding_darwin plugin. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/geocoding_darwin/example/analysis_options.yaml b/geocoding_darwin/example/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/geocoding_darwin/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/geocoding_darwin/example/ios/.gitignore b/geocoding_darwin/example/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/geocoding_darwin/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/geocoding_darwin/example/ios/Flutter/AppFrameworkInfo.plist b/geocoding_darwin/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..7c56964 --- /dev/null +++ b/geocoding_darwin/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/geocoding_darwin/example/ios/Flutter/Debug.xcconfig b/geocoding_darwin/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/geocoding_darwin/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/geocoding_darwin/example/ios/Flutter/Release.xcconfig b/geocoding_darwin/example/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/geocoding_darwin/example/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/geocoding_darwin/example/ios/Runner.xcodeproj/project.pbxproj b/geocoding_darwin/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..53f8c22 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,657 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0EEBE935AC6351396941E417 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 34BAF830DA2761A8E2E100A0 /* Pods */ = { + isa = PBXGroup; + children = ( + ); + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 34BAF830DA2761A8E2E100A0 /* Pods */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 0EEBE935AC6351396941E417 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/geocoding_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/geocoding_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c3fedb2 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/geocoding_darwin/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/geocoding_darwin/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/geocoding_darwin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/geocoding_darwin/example/ios/Runner/AppDelegate.swift b/geocoding_darwin/example/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..6266644 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/geocoding_darwin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/geocoding_darwin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/geocoding_darwin/example/ios/Runner/Base.lproj/Main.storyboard b/geocoding_darwin/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/geocoding_darwin/example/ios/Runner/Info.plist b/geocoding_darwin/example/ios/Runner/Info.plist new file mode 100644 index 0000000..ff90666 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Geocoding Darwin + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + geocoding_darwin_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/geocoding_darwin/example/ios/Runner/Runner-Bridging-Header.h b/geocoding_darwin/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/geocoding_darwin/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/geocoding_darwin/example/ios/RunnerTests/RunnerTests.swift b/geocoding_darwin/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..945da26 --- /dev/null +++ b/geocoding_darwin/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,27 @@ +import Flutter +import UIKit +import XCTest + + +@testable import geocoding_darwin + +// This demonstrates a simple unit test of the Swift portion of this plugin's implementation. +// +// See https://developer.apple.com/documentation/xctest for more information about using XCTest. + +class RunnerTests: XCTestCase { + + func testGetPlatformVersion() { + let plugin = GeocodingDarwinPlugin() + + let call = FlutterMethodCall(methodName: "getPlatformVersion", arguments: []) + + let resultExpectation = expectation(description: "result block must be called.") + plugin.handle(call) { result in + XCTAssertEqual(result as! String, "iOS " + UIDevice.current.systemVersion) + resultExpectation.fulfill() + } + waitForExpectations(timeout: 1) + } + +} diff --git a/geocoding_darwin/example/lib/main.dart b/geocoding_darwin/example/lib/main.dart new file mode 100644 index 0000000..fdb3997 --- /dev/null +++ b/geocoding_darwin/example/lib/main.dart @@ -0,0 +1,164 @@ +import 'package:flutter/material.dart'; + +import 'template/globals.dart'; + +void main() { + runApp(BaseflowPluginExample()); +} + +/// A Flutter application demonstrating the functionality of this plugin +class BaseflowPluginExample extends StatelessWidget { + /// [MaterialColor] to be used in the app [ThemeData] + final MaterialColor themeMaterialColor = + createMaterialColor(const Color.fromRGBO(48, 49, 60, 1)); + + /// Constructs the [BaseflowPluginExample] class + BaseflowPluginExample({super.key}); + + @override + Widget build(BuildContext context) { + final ThemeData theme = ThemeData(); + return MaterialApp( + title: 'Baseflow $pluginName', + theme: theme.copyWith( + scaffoldBackgroundColor: const Color.fromRGBO(48, 49, 60, 0.8), + colorScheme: theme.colorScheme.copyWith( + secondary: Colors.white60, + primary: createMaterialColor(const Color.fromRGBO(48, 49, 60, 1)), + surface: const Color.fromRGBO(48, 49, 60, 0.8), + ), + bottomAppBarTheme: theme.bottomAppBarTheme.copyWith( + color: const Color.fromRGBO(57, 58, 71, 1), + ), + buttonTheme: ButtonThemeData( + buttonColor: themeMaterialColor.shade500, + disabledColor: themeMaterialColor.withRed(200), + splashColor: themeMaterialColor.shade50, + textTheme: ButtonTextTheme.primary, + ), + hintColor: themeMaterialColor.shade500, + textTheme: const TextTheme( + bodyLarge: TextStyle( + color: Colors.white, + fontSize: 16, + height: 1.3, + ), + bodyMedium: TextStyle( + color: Colors.white, + fontSize: 18, + height: 1.2, + ), + labelLarge: TextStyle(color: Colors.white), + displayLarge: TextStyle( + color: Colors.white, + fontSize: 18, + ), + ), + visualDensity: VisualDensity.adaptivePlatformDensity, + inputDecorationTheme: const InputDecorationTheme( + fillColor: Color.fromRGBO(37, 37, 37, 1), + filled: true, + ), + ), + home: const AppHome(title: 'Baseflow $pluginName example app'), + ); + } + + /// Creates a [MaterialColor] based on the supplied [Color] + static MaterialColor createMaterialColor(Color color) { + final strengths = [.05]; + final swatch = {}; + final r = color.r, g = color.g, b = color.b; + + for (var i = 1; i < 10; i++) { + strengths.add(0.1 * i); + } + for (var strength in strengths) { + final ds = 0.5 - strength; + swatch[(strength * 1000).round()] = Color.fromRGBO( + (r + ((ds < 0 ? r : (1.0 - r)) * ds) * 255).round(), + (g + ((ds < 0 ? g : (1.0 - g)) * ds) * 255).round(), + (b + ((ds < 0 ? b : (1.0 - b)) * ds) * 255).round(), + 1, + ); + } + return MaterialColor(color.toARGB32(), swatch); + } +} + +/// A Flutter example demonstrating how the [pluginName] plugin could be used +class AppHome extends StatefulWidget { + /// Constructs the [AppHome] class + const AppHome({super.key, required this.title}); + + /// The [title] of the application, which is shown in the application's + /// title bar. + final String title; + + @override + State createState() => _AppHomeState(); +} + +class _AppHomeState extends State { + final _pageController = PageController(initialPage: 0); + var _currentPage = 0; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).appBarTheme.backgroundColor, + title: Center( + child: Image.asset( + 'res/images/baseflow_logo_def_light-02.png', + width: 140, + ), + ), + ), + body: PageView( + controller: _pageController, + children: pages, + onPageChanged: (page) { + setState(() { + _currentPage = page; + }); + }, + ), + bottomNavigationBar: _bottomAppBar(), + ); + } + + BottomAppBar _bottomAppBar() { + return BottomAppBar( + elevation: 5, + color: Theme.of(context).bottomAppBarTheme.color, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: List.unmodifiable(() sync* { + for (var i = 0; i < pages.length; i++) { + yield Expanded( + child: IconButton( + iconSize: 30, + icon: Icon(icons.elementAt(i)), + color: _bottomAppBarIconColor(i), + onPressed: () => _animateToPage(i), + ), + ); + } + }()), + ), + ); + } + + void _animateToPage(int page) { + _pageController.animateToPage(page, + duration: const Duration(milliseconds: 200), curve: Curves.linear); + } + + Color _bottomAppBarIconColor(int page) { + return _currentPage == page + ? Colors.white + : Theme.of(context).colorScheme.secondary; + } +} diff --git a/geocoding_darwin/example/lib/plugin_example/geocode_page.dart b/geocoding_darwin/example/lib/plugin_example/geocode_page.dart new file mode 100644 index 0000000..2948797 --- /dev/null +++ b/geocoding_darwin/example/lib/plugin_example/geocode_page.dart @@ -0,0 +1,194 @@ +import 'package:flutter/material.dart'; +import 'package:geocoding_darwin/geocoding_darwin.dart'; + +import '../template/globals.dart'; + +/// Example [Widget] showing the use of the Geocode plugin +class GeocodeWidget extends StatefulWidget { + /// Constructs the [GeocodeWidget] class + const GeocodeWidget({super.key}); + + @override + State createState() => _GeocodeWidgetState(); +} + +class _GeocodeWidgetState extends State { + final TextEditingController _addressController = TextEditingController(); + final TextEditingController _latitudeController = TextEditingController(); + final TextEditingController _longitudeController = TextEditingController(); + String _output = ''; + Locale? _locale; + final GeocodingDarwin _geocoding = GeocodingDarwin( + GeocodingDarwinCreationParams(), + ); + + @override + void initState() { + _addressController.text = 'Gronausestraat 710, Enschede'; + _latitudeController.text = '52.2165157'; + _longitudeController.text = '6.9437819'; + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: defaultHorizontalPadding + defaultVerticalPadding, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + const Padding(padding: EdgeInsets.only(top: 32)), + Row( + children: [ + Expanded( + child: TextField( + autocorrect: false, + controller: _latitudeController, + style: Theme.of(context).textTheme.bodyMedium, + decoration: const InputDecoration(hintText: 'Latitude'), + keyboardType: TextInputType.number, + ), + ), + const SizedBox(width: 20), + Expanded( + child: TextField( + autocorrect: false, + controller: _longitudeController, + style: Theme.of(context).textTheme.bodyMedium, + decoration: const InputDecoration(hintText: 'Longitude'), + keyboardType: TextInputType.number, + ), + ), + ], + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Look up address'), + onPressed: () { + final latitude = double.parse(_latitudeController.text); + final longitude = double.parse(_longitudeController.text); + + _geocoding + .placemarkFromCoordinates( + latitude, + longitude, + locale: _locale, + ) + .then((placemarks) { + var output = 'No results found.'; + if (placemarks.isNotEmpty) { + output = placemarks[0].toDisplayString(); + } + + setState(() { + _output = output; + }); + }); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 32)), + TextField( + autocorrect: false, + controller: _addressController, + style: Theme.of(context).textTheme.bodyMedium, + decoration: const InputDecoration(hintText: 'Address'), + keyboardType: TextInputType.text, + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Look up location'), + onPressed: () { + _geocoding.locationFromAddress(_addressController.text).then(( + locations, + ) { + var output = 'No results found.'; + if (locations.isNotEmpty) { + output = locations[0].toDisplayString(); + } + + setState(() { + _output = output; + }); + }); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Is present'), + onPressed: () { + _geocoding.isPresent().then((isPresent) { + var output = isPresent + ? "Geocoder is present" + : "Geocoder is not present"; + setState(() { + _output = output; + }); + }); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Set locale en_US'), + onPressed: () { + setState(() => _locale = Locale('en_US')); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Set locale nl_NL'), + onPressed: () { + setState(() => _locale = Locale('nl_NL')); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Expanded( + child: SingleChildScrollView( + child: SizedBox( + width: MediaQuery.of(context).size.width, + child: Text(_output), + ), + ), + ), + ], + ), + ); + } +} + +extension _PlacemarkExtensions on Placemark { + String toDisplayString() { + return ''' + Name: $name, + Street: $street, + ISO Country Code: $isoCountryCode, + Country: $country, + Postal code: $postalCode, + Administrative area: $administrativeArea, + Subadministrative area: $subAdministrativeArea, + Locality: $locality, + Sublocality: $subLocality, + Thoroughfare: $thoroughfare, + Subthoroughfare: $subThoroughfare'''; + } +} + +extension _LocationExtensions on Location { + String toDisplayString() { + return ''' + Latitude: $latitude, + Longitude: $longitude, + Timestamp: $timestamp'''; + } +} diff --git a/geocoding_darwin/example/lib/template/globals.dart b/geocoding_darwin/example/lib/template/globals.dart new file mode 100644 index 0000000..79b2866 --- /dev/null +++ b/geocoding_darwin/example/lib/template/globals.dart @@ -0,0 +1,37 @@ +import 'dart:core'; + +import 'package:flutter/material.dart'; + +import '../plugin_example/geocode_page.dart'; +import 'info_page.dart'; + +/// The name of the plugin, which will be displayed throughout the example App. +const String pluginName = 'Geocoding'; + +/// Returns Github URL, which is shown in the [InfoPage]. +const String githubURL = 'https://github.com/Baseflow/flutter-geocoding'; + +/// Returns Baseflow URL, which is shown in the [InfoPage]. +const String baseflowURL = 'https://baseflow.com'; + +/// Returns pub.dev URL, which is shown in the [InfoPage]. +const String pubDevURL = 'https://pub.dev/packages/geocoding'; + +/// [EdgeInsets] to define horizontal padding throughout the application. +const EdgeInsets defaultHorizontalPadding = + EdgeInsets.symmetric(horizontal: 24); + +/// [EdgeInsets] to define vertical padding throughout the application. +const EdgeInsets defaultVerticalPadding = EdgeInsets.symmetric(vertical: 24); + +/// Returns a [List] with [IconData] to show in the [AppHome] [AppBar]. +final List icons = [ + Icons.location_on, + Icons.info_outline, +]; + +/// Returns a [List] with [Widget]s to construct pages in the [AppBar]. +final List pages = [ + const GeocodeWidget(), + const InfoPage(), +]; diff --git a/geocoding_darwin/example/lib/template/info_page.dart b/geocoding_darwin/example/lib/template/info_page.dart new file mode 100644 index 0000000..e664649 --- /dev/null +++ b/geocoding_darwin/example/lib/template/info_page.dart @@ -0,0 +1,101 @@ +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'globals.dart'; + +/// [StatelessWidget] displaying information about Baseflow +class InfoPage extends StatelessWidget { + /// Constructs the [InfoPage] class + const InfoPage({super.key}); + + @override + Widget build(BuildContext context) { + return SizedBox.expand( + child: Align( + alignment: Alignment.bottomCenter, + child: SingleChildScrollView( + child: Padding( + padding: defaultHorizontalPadding + defaultVerticalPadding, + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Align( + alignment: Alignment.centerLeft, + child: Image.asset( + 'res/images/poweredByBaseflowLogoLight@3x.png', + width: 250, + alignment: Alignment.centerLeft, + ), + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 24), + ), + Text( + 'This app showcases the possibilities of the $pluginName ' + 'plugin, powered by Baseflow. ' + 'This plugin is available as open source project on Github. ' + '\n\n' + 'Need help with integrating functionalities within your own ' + 'apps? Contact us at hello@baseflow.com', + style: Theme.of(context).textTheme.bodyLarge, + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 8), + ), + _launcherRaisedButton( + 'Find us on Github', + githubURL, + context, + ), + _launcherRaisedButton( + 'Find us on pub.dev', + pubDevURL, + context, + ), + _launcherRaisedButton( + 'Visit baseflow.com', + baseflowURL, + context, + ), + const Padding( + padding: EdgeInsets.only(bottom: 30), + ), + ], + ), + ), + ), + ), + ); + } + + Widget _launcherRaisedButton(String text, String url, BuildContext context) { + final uri = Uri.parse(url); + return Container( + width: MediaQuery.of(context).size.width, + height: 50, + margin: const EdgeInsets.only(top: 24.0), + alignment: Alignment.center, + child: SizedBox.expand( + child: ElevatedButton( + style: ElevatedButton.styleFrom( + padding: const EdgeInsets.all(8), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30.0), + ), + ), + child: Text(text), + onPressed: () => _launchURL(uri), + ), + ), + ); + } + + Future _launchURL(Uri uri) async { + if (await canLaunchUrl(uri)) { + await launchUrl(uri); + } else { + throw 'Could not launch ${uri.path}'; + } + } +} diff --git a/geocoding_darwin/example/macos/.gitignore b/geocoding_darwin/example/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/geocoding_darwin/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig b/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig b/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/geocoding_darwin/example/macos/Flutter/GeneratedPluginRegistrant.swift b/geocoding_darwin/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..f392551 --- /dev/null +++ b/geocoding_darwin/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import geocoding_darwin +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + GeocodingDarwinPlugin.register(with: registry.registrar(forPlugin: "GeocodingDarwinPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/geocoding_darwin/example/macos/Podfile b/geocoding_darwin/example/macos/Podfile new file mode 100644 index 0000000..ff5ddb3 --- /dev/null +++ b/geocoding_darwin/example/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj b/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ea2ffe1 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,803 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 48ABEFB258AE83B4743B4710 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B09F7F8CD9716B0F0E3BC98 /* Pods_Runner.framework */; }; + BA9665A6E1BC259A67E02AF8 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88C4DB08B12E04FD63D80D5C /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 287FCF00A868D8A6727C387B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 28B8835629FC83409C505B2A /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* geocoding_darwin_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = geocoding_darwin_example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 4B09F7F8CD9716B0F0E3BC98 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6498F3D5E582131D94597230 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 88C4DB08B12E04FD63D80D5C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 908C58137FEFFC3F3DB14060 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + B69E915DDAE5DD7AA8F7C077 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + FCBB901320B096B07F0E75A8 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BA9665A6E1BC259A67E02AF8 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 48ABEFB258AE83B4743B4710 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 02464DC4B22221A691E25E06 /* Pods */ = { + isa = PBXGroup; + children = ( + 6498F3D5E582131D94597230 /* Pods-Runner.debug.xcconfig */, + 908C58137FEFFC3F3DB14060 /* Pods-Runner.release.xcconfig */, + 287FCF00A868D8A6727C387B /* Pods-Runner.profile.xcconfig */, + B69E915DDAE5DD7AA8F7C077 /* Pods-RunnerTests.debug.xcconfig */, + FCBB901320B096B07F0E75A8 /* Pods-RunnerTests.release.xcconfig */, + 28B8835629FC83409C505B2A /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + 02464DC4B22221A691E25E06 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* geocoding_darwin_example.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4B09F7F8CD9716B0F0E3BC98 /* Pods_Runner.framework */, + 88C4DB08B12E04FD63D80D5C /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + D657B4682C87E22D89690F5D /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 650BCB0EB25709F3C36549AB /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + C1C3D5E969954BB98E819A17 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* geocoding_darwin_example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 650BCB0EB25709F3C36549AB /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C1C3D5E969954BB98E819A17 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D657B4682C87E22D89690F5D /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B69E915DDAE5DD7AA8F7C077 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/geocoding_darwin_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/geocoding_darwin_example"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FCBB901320B096B07F0E75A8 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/geocoding_darwin_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/geocoding_darwin_example"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 28B8835629FC83409C505B2A /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/geocoding_darwin_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/geocoding_darwin_example"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/geocoding_darwin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/geocoding_darwin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..d33269c --- /dev/null +++ b/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/geocoding_darwin/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/geocoding_darwin/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/geocoding_darwin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/geocoding_darwin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/geocoding_darwin/example/macos/Runner/AppDelegate.swift b/geocoding_darwin/example/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..b3c1761 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/geocoding_darwin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/geocoding_darwin/example/macos/Runner/Configs/AppInfo.xcconfig b/geocoding_darwin/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..d157db5 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = geocoding_darwin_example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.baseflow.geocoding.geocodingDarwinExample + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2025 com.baseflow.geocoding. All rights reserved. diff --git a/geocoding_darwin/example/macos/Runner/Configs/Debug.xcconfig b/geocoding_darwin/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/geocoding_darwin/example/macos/Runner/Configs/Release.xcconfig b/geocoding_darwin/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/geocoding_darwin/example/macos/Runner/Configs/Warnings.xcconfig b/geocoding_darwin/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/geocoding_darwin/example/macos/Runner/DebugProfile.entitlements b/geocoding_darwin/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/geocoding_darwin/example/macos/Runner/Info.plist b/geocoding_darwin/example/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/geocoding_darwin/example/macos/Runner/MainFlutterWindow.swift b/geocoding_darwin/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/geocoding_darwin/example/macos/Runner/Release.entitlements b/geocoding_darwin/example/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/geocoding_darwin/example/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/geocoding_darwin/example/macos/RunnerTests/RunnerTests.swift b/geocoding_darwin/example/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..3a64fe0 --- /dev/null +++ b/geocoding_darwin/example/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,28 @@ +import Cocoa +import FlutterMacOS +import XCTest + + +@testable import geocoding_darwin + +// This demonstrates a simple unit test of the Swift portion of this plugin's implementation. +// +// See https://developer.apple.com/documentation/xctest for more information about using XCTest. + +class RunnerTests: XCTestCase { + + func testGetPlatformVersion() { + let plugin = GeocodingDarwinPlugin() + + let call = FlutterMethodCall(methodName: "getPlatformVersion", arguments: []) + + let resultExpectation = expectation(description: "result block must be called.") + plugin.handle(call) { result in + XCTAssertEqual(result as! String, + "macOS " + ProcessInfo.processInfo.operatingSystemVersionString) + resultExpectation.fulfill() + } + waitForExpectations(timeout: 1) + } + +} diff --git a/geocoding_darwin/example/pubspec.yaml b/geocoding_darwin/example/pubspec.yaml new file mode 100644 index 0000000..e45f32c --- /dev/null +++ b/geocoding_darwin/example/pubspec.yaml @@ -0,0 +1,29 @@ +name: geocoding_darwin_example +description: "Demonstrates how to use the geocoding_darwin plugin." +publish_to: "none" # Remove this line if you wish to publish to pub.dev + +environment: + sdk: ^3.8.1 + +dependencies: + flutter: + sdk: flutter + + geocoding_darwin: + path: ../ + cupertino_icons: ^1.0.8 + url_launcher: ^6.3.1 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + +flutter: + uses-material-design: true + + assets: + - res/images/baseflow_logo_def_light-02.png + - res/images/poweredByBaseflowLogoLight@3x.png diff --git a/geocoding_darwin/example/res/images/baseflow_logo_def_light-02.png b/geocoding_darwin/example/res/images/baseflow_logo_def_light-02.png new file mode 100644 index 0000000000000000000000000000000000000000..85f071f275a6572658078b2e05b773cf5e006907 GIT binary patch literal 22696 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

9yGp11G?`E!)dXaQu2W~J` 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 wrapResponse({Object? result, PlatformException? error, bool empty = false}) { + if (empty) { + return []; + } + if (error == null) { + return [result]; + } + return [error.code, error.message, error.details]; +} +/// An immutable object that serves as the base class for all ProxyApis and +/// can provide functional copies of itself. +/// +/// All implementers are expected to be [immutable] as defined by the annotation +/// and override [pigeon_copy] returning an instance of itself. +@immutable +abstract class PigeonInternalProxyApiBaseClass { + /// Construct a [PigeonInternalProxyApiBaseClass]. + PigeonInternalProxyApiBaseClass({ + this.pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + }) : pigeon_instanceManager = + pigeon_instanceManager ?? PigeonInstanceManager.instance; + + /// Sends and receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used, which routes to + /// the host platform. + @protected + final BinaryMessenger? pigeon_binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final PigeonInstanceManager pigeon_instanceManager; + + /// Instantiates and returns a functionally identical object to oneself. + /// + /// Outside of tests, this method should only ever be called by + /// [PigeonInstanceManager]. + /// + /// Subclasses should always override their parent's implementation of this + /// method. + @protected + PigeonInternalProxyApiBaseClass pigeon_copy(); +} + +/// Maintains instances used to communicate with the native objects they +/// represent. +/// +/// Added instances are stored as weak references and their copies are stored +/// as strong references to maintain access to their variables and callback +/// methods. Both are stored with the same identifier. +/// +/// When a weak referenced instance becomes inaccessible, +/// [onWeakReferenceRemoved] is called with its associated identifier. +/// +/// If an instance is retrieved and has the possibility to be used, +/// (e.g. calling [getInstanceWithWeakReference]) a copy of the strong reference +/// is added as a weak reference with the same identifier. This prevents a +/// scenario where the weak referenced instance was released and then later +/// returned by the host platform. +class PigeonInstanceManager { + /// Constructs a [PigeonInstanceManager]. + PigeonInstanceManager({required void Function(int) onWeakReferenceRemoved}) { + this.onWeakReferenceRemoved = (int identifier) { + _weakInstances.remove(identifier); + onWeakReferenceRemoved(identifier); + }; + _finalizer = Finalizer(this.onWeakReferenceRemoved); + } + + // Identifiers are locked to a specific range to avoid collisions with objects + // created simultaneously by the host platform. + // Host uses identifiers >= 2^16 and Dart is expected to use values n where, + // 0 <= n < 2^16. + static const int _maxDartCreatedIdentifier = 65536; + + /// The default [PigeonInstanceManager] used by ProxyApis. + /// + /// On creation, this manager makes a call to clear the native + /// InstanceManager. This is to prevent identifier conflicts after a host + /// restart. + static final PigeonInstanceManager instance = _initInstance(); + + // Expando is used because it doesn't prevent its keys from becoming + // inaccessible. This allows the manager to efficiently retrieve an identifier + // of an instance without holding a strong reference to that instance. + // + // It also doesn't use `==` to search for identifiers, which would lead to an + // infinite loop when comparing an object to its copy. (i.e. which was caused + // by calling instanceManager.getIdentifier() inside of `==` while this was a + // HashMap). + final Expando _identifiers = Expando(); + final Map> _weakInstances = + >{}; + final Map _strongInstances = {}; + late final Finalizer _finalizer; + int _nextIdentifier = 0; + + /// Called when a weak referenced instance is removed by [removeWeakReference] + /// or becomes inaccessible. + late final void Function(int) onWeakReferenceRemoved; + + static PigeonInstanceManager _initInstance() { + if (Platform.environment['FLUTTER_TEST'] == 'true') { + return PigeonInstanceManager(onWeakReferenceRemoved: (_) {}); + } + WidgetsFlutterBinding.ensureInitialized(); + final _PigeonInternalInstanceManagerApi api = _PigeonInternalInstanceManagerApi(); + // Clears the native `PigeonInstanceManager` on the initial use of the Dart one. + api.clear(); + final PigeonInstanceManager instanceManager = PigeonInstanceManager( + onWeakReferenceRemoved: (int identifier) { + api.removeStrongReference(identifier); + }, + ); + _PigeonInternalInstanceManagerApi.setUpMessageHandlers(instanceManager: instanceManager); + CLFloor.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + CLGeocoder.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + CLLocation.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + CLLocationCoordinate2D.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + CLLocationSourceInformation.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + CLPlacemark.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + CNPostalAddress.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + Locale.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + NSObject.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + return instanceManager; + } + + /// Adds a new instance that was instantiated by Dart. + /// + /// In other words, Dart wants to add a new instance that will represent + /// an object that will be instantiated on the host platform. + /// + /// Throws assertion error if the instance has already been added. + /// + /// Returns the randomly generated id of the [instance] added. + int addDartCreatedInstance(PigeonInternalProxyApiBaseClass instance) { + assert(getIdentifier(instance) == null); + + final int identifier = _nextUniqueIdentifier(); + _identifiers[instance] = identifier; + _weakInstances[identifier] = + WeakReference(instance); + _finalizer.attach(instance, identifier, detach: instance); + + final PigeonInternalProxyApiBaseClass copy = instance.pigeon_copy(); + _identifiers[copy] = identifier; + _strongInstances[identifier] = copy; + return identifier; + } + + /// Removes the instance, if present, and call [onWeakReferenceRemoved] with + /// its identifier. + /// + /// Returns the identifier associated with the removed instance. Otherwise, + /// `null` if the instance was not found in this manager. + /// + /// This does not remove the strong referenced instance associated with + /// [instance]. This can be done with [remove]. + int? removeWeakReference(PigeonInternalProxyApiBaseClass instance) { + final int? identifier = getIdentifier(instance); + if (identifier == null) { + return null; + } + + _identifiers[instance] = null; + _finalizer.detach(instance); + onWeakReferenceRemoved(identifier); + + return identifier; + } + + /// Removes [identifier] and its associated strongly referenced instance, if + /// present, from the manager. + /// + /// Returns the strong referenced instance associated with [identifier] before + /// it was removed. Returns `null` if [identifier] was not associated with + /// any strong reference. + /// + /// Throws an `AssertionError` if the weak referenced instance associated with + /// [identifier] is not removed first. This can be done with + /// [removeWeakReference]. + T? remove(int identifier) { + final T? instance = _weakInstances[identifier]?.target as T?; + assert( + instance == null, + 'A strong instance with identifier $identifier is being removed despite the weak reference still existing: $instance', + ); + return _strongInstances.remove(identifier) as T?; + } + + /// Retrieves the instance associated with identifier. + /// + /// The value returned is chosen from the following order: + /// + /// 1. A weakly referenced instance associated with identifier. + /// 2. If the only instance associated with identifier is a strongly + /// referenced instance, a copy of the instance is added as a weak reference + /// with the same identifier. Returning the newly created copy. + /// 3. If no instance is associated with identifier, returns null. + /// + /// This method also expects the host `InstanceManager` to have a strong + /// reference to the instance the identifier is associated with. + T? getInstanceWithWeakReference(int identifier) { + final PigeonInternalProxyApiBaseClass? weakInstance = _weakInstances[identifier]?.target; + + if (weakInstance == null) { + final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; + if (strongInstance != null) { + final PigeonInternalProxyApiBaseClass copy = strongInstance.pigeon_copy(); + _identifiers[copy] = identifier; + _weakInstances[identifier] = WeakReference(copy); + _finalizer.attach(copy, identifier, detach: copy); + return copy as T; + } + return strongInstance as T?; + } + + return weakInstance as T; + } + + /// Retrieves the identifier associated with instance. + int? getIdentifier(PigeonInternalProxyApiBaseClass instance) { + return _identifiers[instance]; + } + + /// Adds a new instance that was instantiated by the host platform. + /// + /// In other words, the host platform wants to add a new instance that + /// represents an object on the host platform. Stored with [identifier]. + /// + /// Throws assertion error if the instance or its identifier has already been + /// added. + void addHostCreatedInstance(PigeonInternalProxyApiBaseClass instance, int identifier) { + assert(!containsIdentifier(identifier)); + assert(getIdentifier(instance) == null); + assert(identifier >= 0); + + _identifiers[instance] = identifier; + _strongInstances[identifier] = instance; + } + + /// Whether this manager contains the given [identifier]. + bool containsIdentifier(int identifier) { + return _weakInstances.containsKey(identifier) || + _strongInstances.containsKey(identifier); + } + + int _nextUniqueIdentifier() { + late int identifier; + do { + identifier = _nextIdentifier; + _nextIdentifier = (_nextIdentifier + 1) % _maxDartCreatedIdentifier; + } while (containsIdentifier(identifier)); + return identifier; + } +} + +/// Generated API for managing the Dart and native `PigeonInstanceManager`s. +class _PigeonInternalInstanceManagerApi { + /// Constructor for [_PigeonInternalInstanceManagerApi]. + _PigeonInternalInstanceManagerApi({BinaryMessenger? binaryMessenger}) + : pigeonVar_binaryMessenger = binaryMessenger; + + final BinaryMessenger? pigeonVar_binaryMessenger; + + static const MessageCodec pigeonChannelCodec = _PigeonCodec(); + + static void setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? binaryMessenger, + PigeonInstanceManager? instanceManager, + }) { + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.removeStrongReference', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.removeStrongReference was null.'); + final List args = (message as List?)!; + final int? arg_identifier = (args[0] as int?); + assert(arg_identifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.removeStrongReference was null, expected non-null int.'); + try { + (instanceManager ?? PigeonInstanceManager.instance) + .remove(arg_identifier!); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + Future removeStrongReference(int identifier) async { + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.removeStrongReference'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([identifier]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + /// Clear the native `PigeonInstanceManager`. + /// + /// This is typically called after a hot restart. + Future clear() async { + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.PigeonInternalInstanceManager.clear'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } +} + +class _PigeonInternalProxyApiBaseCodec extends _PigeonCodec { + const _PigeonInternalProxyApiBaseCodec(this.instanceManager); + final PigeonInstanceManager instanceManager; + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is PigeonInternalProxyApiBaseClass) { + buffer.putUint8(128); + writeValue(buffer, instanceManager.getIdentifier(value)); + } else { + super.writeValue(buffer, value); + } + } + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return instanceManager + .getInstanceWithWeakReference(readValue(buffer)! as int); + default: + return super.readValueOfType(type, buffer); + } + } +} + + +/// The values that can be returned in a change dictionary. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions. +enum KeyValueObservingOptions { + /// Indicates that the change dictionary should provide the new attribute + /// value, if applicable. + newValue, + /// Indicates that the change dictionary should contain the old attribute + /// value, if applicable. + oldValue, + /// If specified, a notification should be sent to the observer immediately, + /// before the observer registration method even returns. + initialValue, + /// Whether separate notifications should be sent to the observer before and + /// after each change, instead of a single notification after the change. + priorNotification, +} + +/// The kinds of changes that can be observed. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvaluechange. +enum KeyValueChange { + /// Indicates that the value of the observed key path was set to a new value. + setting, + /// Indicates that an object has been inserted into the to-many relationship + /// that is being observed. + insertion, + /// Indicates that an object has been removed from the to-many relationship + /// that is being observed. + removal, + /// Indicates that an object has been replaced in the to-many relationship + /// that is being observed. + replacement, + /// The value is not recognized by the wrapper. + unknown, +} + +/// The keys that can appear in the change dictionary. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvaluechangekey. +enum KeyValueChangeKey { + /// If the value of the `KeyValueChangeKey.kind` entry is + /// `KeyValueChange.insertion`, `KeyValueChange.removal`, or + /// `KeyValueChange.replacement`, the value of this key is a Set object that + /// contains the indexes of the inserted, removed, or replaced objects. + indexes, + /// An object that contains a value corresponding to one of the + /// `KeyValueChange` enum, indicating what sort of change has occurred. + kind, + /// If the value of the `KeyValueChange.kind` entry is + /// `KeyValueChange.setting, and `KeyValueObservingOptions.newValue` was + /// specified when the observer was registered, the value of this key is the + /// new value for the attribute. + newValue, + /// If the `KeyValueObservingOptions.priorNotification` option was specified + /// when the observer was registered this notification is sent prior to a + /// change. + notificationIsPrior, + /// If the value of the `KeyValueChange.kind` entry is + /// `KeyValueChange.setting`, and `KeyValueObservingOptions.old` was specified + /// when the observer was registered, the value of this key is the value + /// before the attribute was changed. + oldValue, + /// The value is not recognized by the wrapper. + unknown, +} + + +class _PigeonCodec extends StandardMessageCodec { + const _PigeonCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is int) { + buffer.putUint8(4); + buffer.putInt64(value); + } else if (value is KeyValueObservingOptions) { + buffer.putUint8(129); + writeValue(buffer, value.index); + } else if (value is KeyValueChange) { + buffer.putUint8(130); + writeValue(buffer, value.index); + } else if (value is KeyValueChangeKey) { + buffer.putUint8(131); + writeValue(buffer, value.index); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 129: + final int? value = readValue(buffer) as int?; + return value == null ? null : KeyValueObservingOptions.values[value]; + case 130: + final int? value = readValue(buffer) as int?; + return value == null ? null : KeyValueChange.values[value]; + case 131: + final int? value = readValue(buffer) as int?; + return value == null ? null : KeyValueChangeKey.values[value]; + default: + return super.readValueOfType(type, buffer); + } + } +} +/// The floor of a building on which the user’s device is located. +/// +/// See https://developer.apple.com/documentation/corelocation/clfloor +class CLFloor extends NSObject { + /// Constructs [CLFloor] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CLFloor.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required this.level, + super.observeValue, + }) : super.pigeon_detached(); + + /// The logical floor of the building. + final int level; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CLFloor Function(int level)? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + 'dev.flutter.pigeon.geocoding_darwin.CLFloor.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLFloor.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLFloor.pigeon_newInstance was null, expected non-null int.'); + final int? arg_level = (args[1] as int?); + assert(arg_level != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLFloor.pigeon_newInstance was null, expected non-null int.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call(arg_level!) ?? + CLFloor.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + level: arg_level!, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + CLFloor pigeon_copy() { + return CLFloor.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + level: level, + observeValue: observeValue, + ); + } +} + +/// An object that displays interactive web content, such as for an in-app +/// browser. +/// +/// See https://developer.apple.com/documentation/webkit/wkwebview. +class CLGeocoder extends NSObject { + /// Creates a [CLGeocoder]. + CLGeocoder({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + super.observeValue, + }) : super.pigeon_detached() { + final int pigeonVar_instanceIdentifier = + pigeon_instanceManager.addDartCreatedInstance(this); + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLGeocoder; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLGeocoder.pigeon_defaultConstructor'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([pigeonVar_instanceIdentifier]); + () async { + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + }(); + } + + /// Constructs [CLGeocoder] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CLGeocoder.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + super.observeValue, + }) : super.pigeon_detached(); + + late final _PigeonInternalProxyApiBaseCodec _pigeonVar_codecCLGeocoder = + _PigeonInternalProxyApiBaseCodec(pigeon_instanceManager); + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CLGeocoder Function()? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.CLGeocoder.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLGeocoder.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLGeocoder.pigeon_newInstance was null, expected non-null int.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call() ?? + CLGeocoder.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + /// Submits a forward-geocoding requesting using the specified address string + /// and locale information. + Future?> geocodeAddressString( + String address, + Locale? locale, + ) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLGeocoder; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLGeocoder.geocodeAddressString'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, address, locale]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as List?)?.cast(); + } + } + + /// Submits a forward-geocoding requesting using the specified locale and + /// Contacts framework information. + Future?> geocodePostalAddress( + CNPostalAddress postalAddress, + Locale? locale, + ) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLGeocoder; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLGeocoder.geocodePostalAddress'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, postalAddress, locale]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as List?)?.cast(); + } + } + + /// Submits a reverse-geocoding request for the specified location. + Future?> reverseGeocodeLocation( + CLLocation location, + Locale? locale, + ) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLGeocoder; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLGeocoder.reverseGeocodeLocation'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, location, locale]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as List?)?.cast(); + } + } + + @override + CLGeocoder pigeon_copy() { + return CLGeocoder.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + observeValue: observeValue, + ); + } +} + +/// The latitude, longitude, and course information reported by the system. +/// +/// See https://developer.apple.com/documentation/corelocation/cllocation +class CLLocation extends NSObject { + /// Creates a [CLLocation] based on the supplied coordinates. + CLLocation({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + super.observeValue, + required double latitude, + required double longitude, + }) : super.pigeon_detached() { + final int pigeonVar_instanceIdentifier = + pigeon_instanceManager.addDartCreatedInstance(this); + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.pigeon_defaultConstructor'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel + .send([pigeonVar_instanceIdentifier, latitude, longitude]); + () async { + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + }(); + } + + /// Constructs [CLLocation] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CLLocation.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + super.observeValue, + }) : super.pigeon_detached(); + + late final _PigeonInternalProxyApiBaseCodec _pigeonVar_codecCLLocation = + _PigeonInternalProxyApiBaseCodec(pigeon_instanceManager); + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CLLocation Function()? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocation.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocation.pigeon_newInstance was null, expected non-null int.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call() ?? + CLLocation.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + /// The geographical coordinate information. + Future getCoordinate() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getCoordinate'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as CLLocationCoordinate2D?)!; + } + } + + /// The altitude above mean sea level associated with a location, measured in + /// meters. + Future getAltitude() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getAltitude'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The altitude as a height above the World Geodetic System 1984 (WGS84) + /// ellipsoid, measured in meters. + Future getEllipsoidalAltitude() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getEllipsoidalAltitude'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The logical floor of the building in which the user is located. + Future getFloor() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getFloor'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as CLFloor?); + } + } + + /// The time at which this location was determined (in seconds since epoch). + Future getTimestamp() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getTimestamp'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as int?)!; + } + } + + /// Information about the source that provides the location. + Future getSourceInformation() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getSourceInformation'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as CLLocationSourceInformation?); + } + } + + /// The radius of uncertainty for the location, measured in meters. + Future getHorizontalAccuracy() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getHorizontalAccuracy'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The validity of the altitude values, and their estimated uncertainty, + /// measured in meters. + Future getVerticalAccuracy() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getVerticalAccuracy'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The instantaneous speed of the device, measured in meters per second. + Future getSpeed() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getSpeed'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The accuracy of the speed value, measured in meters per second. + Future getSpeedAccuracy() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getSpeedAccuracy'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The direction in which the device is traveling, measured in degrees and + /// relative to due north. + Future getCourse() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getCourse'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// The accuracy of the course value, measured in degrees. + Future getCourseAccuracy() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.getCourseAccuracy'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + /// Returns the distance (measured in meters) from the current object’s + /// location to the specified location. + Future distance(CLLocation from) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCLLocation; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.CLLocation.distance'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, from]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as double?)!; + } + } + + @override + CLLocation pigeon_copy() { + return CLLocation.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + observeValue: observeValue, + ); + } +} + +/// The latitude and longitude associated with a location, specified using the +/// WGS 84 reference frame. +/// +/// See https://developer.apple.com/documentation/corelocation/cllocationcoordinate2d +class CLLocationCoordinate2D extends NSObject { + /// Constructs [CLLocationCoordinate2D] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CLLocationCoordinate2D.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required this.latitude, + required this.longitude, + super.observeValue, + }) : super.pigeon_detached(); + + /// The latitude in degrees. + final double latitude; + + /// The longitude in degrees. + final double longitude; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CLLocationCoordinate2D Function( + double latitude, + double longitude, + )? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.CLLocationCoordinate2D.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationCoordinate2D.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationCoordinate2D.pigeon_newInstance was null, expected non-null int.'); + final double? arg_latitude = (args[1] as double?); + assert(arg_latitude != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationCoordinate2D.pigeon_newInstance was null, expected non-null double.'); + final double? arg_longitude = (args[2] as double?); + assert(arg_longitude != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationCoordinate2D.pigeon_newInstance was null, expected non-null double.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call(arg_latitude!, arg_longitude!) ?? + CLLocationCoordinate2D.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + latitude: arg_latitude!, + longitude: arg_longitude!, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + CLLocationCoordinate2D pigeon_copy() { + return CLLocationCoordinate2D.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + latitude: latitude, + longitude: longitude, + observeValue: observeValue, + ); + } +} + +/// Information about the source that provides a location. +/// +/// See https://developer.apple.com/documentation/corelocation/cllocationsourceinformation +class CLLocationSourceInformation extends NSObject { + /// Constructs [CLLocationSourceInformation] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CLLocationSourceInformation.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required this.isProducedByAccessory, + required this.isSimulatedBySoftware, + super.observeValue, + }) : super.pigeon_detached(); + + /// A Boolean value that indicates whether the system receives the location + /// from an external accessory. + final bool isProducedByAccessory; + + /// A Boolean value that indicates whether the system generates the location + /// using on-device software simulation. + final bool isSimulatedBySoftware; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CLLocationSourceInformation Function( + bool isProducedByAccessory, + bool isSimulatedBySoftware, + )? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.CLLocationSourceInformation.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationSourceInformation.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationSourceInformation.pigeon_newInstance was null, expected non-null int.'); + final bool? arg_isProducedByAccessory = (args[1] as bool?); + assert(arg_isProducedByAccessory != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationSourceInformation.pigeon_newInstance was null, expected non-null bool.'); + final bool? arg_isSimulatedBySoftware = (args[2] as bool?); + assert(arg_isSimulatedBySoftware != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLLocationSourceInformation.pigeon_newInstance was null, expected non-null bool.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call( + arg_isProducedByAccessory!, arg_isSimulatedBySoftware!) ?? + CLLocationSourceInformation.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + isProducedByAccessory: arg_isProducedByAccessory!, + isSimulatedBySoftware: arg_isSimulatedBySoftware!, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + CLLocationSourceInformation pigeon_copy() { + return CLLocationSourceInformation.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + isProducedByAccessory: isProducedByAccessory, + isSimulatedBySoftware: isSimulatedBySoftware, + observeValue: observeValue, + ); + } +} + +/// A user-friendly description of a geographic coordinate, often containing the +/// name of the place, its address, and other relevant information. +/// +/// See https://developer.apple.com/documentation/corelocation/clplacemark +class CLPlacemark extends NSObject { + /// Constructs [CLPlacemark] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CLPlacemark.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + this.location, + this.name, + this.thoroughfare, + this.subThoroughfare, + this.locality, + this.subLocality, + this.administrativeArea, + this.subAdministrativeArea, + this.postalCode, + this.isoCountryCode, + this.country, + this.postalAddress, + super.observeValue, + }) : super.pigeon_detached(); + + /// The [CLLocation] containing latitude and longitude information. + final CLLocation? location; + + /// The name of the placemark. + final String? name; + + /// The street address associated with the placemark. + final String? thoroughfare; + + /// Additional street-level information for the placemark. + final String? subThoroughfare; + + /// The city associated with the placemark. + final String? locality; + + /// Additional city-level information for the placemark. + final String? subLocality; + + /// The state or province associated with the placemark. + final String? administrativeArea; + + /// Additional administrative area information for the placemark. + final String? subAdministrativeArea; + + /// The postal code associated with the placemark. + final String? postalCode; + + /// The abbreviated country or region name. + final String? isoCountryCode; + + /// The name of the country or region associated with the placemark. + final String? country; + + /// The postal address associated with the location, formatted for use with the Contacts framework. + final CNPostalAddress? postalAddress; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CLPlacemark Function( + CLLocation? location, + String? name, + String? thoroughfare, + String? subThoroughfare, + String? locality, + String? subLocality, + String? administrativeArea, + String? subAdministrativeArea, + String? postalCode, + String? isoCountryCode, + String? country, + CNPostalAddress? postalAddress, + )? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.CLPlacemark.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLPlacemark.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CLPlacemark.pigeon_newInstance was null, expected non-null int.'); + final CLLocation? arg_location = (args[1] as CLLocation?); + final String? arg_name = (args[2] as String?); + final String? arg_thoroughfare = (args[3] as String?); + final String? arg_subThoroughfare = (args[4] as String?); + final String? arg_locality = (args[5] as String?); + final String? arg_subLocality = (args[6] as String?); + final String? arg_administrativeArea = (args[7] as String?); + final String? arg_subAdministrativeArea = (args[8] as String?); + final String? arg_postalCode = (args[9] as String?); + final String? arg_isoCountryCode = (args[10] as String?); + final String? arg_country = (args[11] as String?); + final CNPostalAddress? arg_postalAddress = + (args[12] as CNPostalAddress?); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call( + arg_location, + arg_name, + arg_thoroughfare, + arg_subThoroughfare, + arg_locality, + arg_subLocality, + arg_administrativeArea, + arg_subAdministrativeArea, + arg_postalCode, + arg_isoCountryCode, + arg_country, + arg_postalAddress) ?? + CLPlacemark.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + location: arg_location, + name: arg_name, + thoroughfare: arg_thoroughfare, + subThoroughfare: arg_subThoroughfare, + locality: arg_locality, + subLocality: arg_subLocality, + administrativeArea: arg_administrativeArea, + subAdministrativeArea: arg_subAdministrativeArea, + postalCode: arg_postalCode, + isoCountryCode: arg_isoCountryCode, + country: arg_country, + postalAddress: arg_postalAddress, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + CLPlacemark pigeon_copy() { + return CLPlacemark.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + location: location, + name: name, + thoroughfare: thoroughfare, + subThoroughfare: subThoroughfare, + locality: locality, + subLocality: subLocality, + administrativeArea: administrativeArea, + subAdministrativeArea: subAdministrativeArea, + postalCode: postalCode, + isoCountryCode: isoCountryCode, + country: country, + postalAddress: postalAddress, + observeValue: observeValue, + ); + } +} + +/// An immutable representation of the postal address for a contact. +/// +/// See https://developer.apple.com/documentation/Contacts/CNPostalAddress +class CNPostalAddress extends NSObject { + /// Constructs [CNPostalAddress] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + CNPostalAddress.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required this.street, + required this.city, + required this.state, + required this.postalCode, + required this.country, + required this.isoCountryCode, + required this.subAdministrativeArea, + required this.subLocality, + super.observeValue, + }) : super.pigeon_detached(); + + /// The street name in a postal address. + final String street; + + /// The city name in a postal address. + final String city; + + /// The state name in a postal address. + final String state; + + /// The postal code in a postal address. + final String postalCode; + + /// The country or region name in a postal address. + final String country; + + /// The ISO country code for the country or region in a postal address, using + /// the ISO 3166-1 alpha-2 standard. + final String isoCountryCode; + + /// The subadministrative area (such as a county or other region) in a postal + /// address. + final String subAdministrativeArea; + + /// Additional information associated with the location, typically defined at + /// the city or town level, in a postal address. + final String subLocality; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + CNPostalAddress Function( + String street, + String city, + String state, + String postalCode, + String country, + String isoCountryCode, + String subAdministrativeArea, + String subLocality, + )? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null int.'); + final String? arg_street = (args[1] as String?); + assert(arg_street != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_city = (args[2] as String?); + assert(arg_city != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_state = (args[3] as String?); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_postalCode = (args[4] as String?); + assert(arg_postalCode != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_country = (args[5] as String?); + assert(arg_country != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_isoCountryCode = (args[6] as String?); + assert(arg_isoCountryCode != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_subAdministrativeArea = (args[7] as String?); + assert(arg_subAdministrativeArea != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + final String? arg_subLocality = (args[8] as String?); + assert(arg_subLocality != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.CNPostalAddress.pigeon_newInstance was null, expected non-null String.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call( + arg_street!, + arg_city!, + arg_state!, + arg_postalCode!, + arg_country!, + arg_isoCountryCode!, + arg_subAdministrativeArea!, + arg_subLocality!) ?? + CNPostalAddress.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + street: arg_street!, + city: arg_city!, + state: arg_state!, + postalCode: arg_postalCode!, + country: arg_country!, + isoCountryCode: arg_isoCountryCode!, + subAdministrativeArea: arg_subAdministrativeArea!, + subLocality: arg_subLocality!, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + CNPostalAddress pigeon_copy() { + return CNPostalAddress.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + street: street, + city: city, + state: state, + postalCode: postalCode, + country: country, + isoCountryCode: isoCountryCode, + subAdministrativeArea: subAdministrativeArea, + subLocality: subLocality, + observeValue: observeValue, + ); + } +} + +/// Information about linguistic, cultural, and technological conventions for +/// use in formatting data for presentation. +/// +/// See https://developer.apple.com/documentation/Foundation/Locale +class Locale extends PigeonInternalProxyApiBaseClass { + /// Creates a [Locale] matching the given identifier. + Locale({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required String identifier, + }) { + final int pigeonVar_instanceIdentifier = + pigeon_instanceManager.addDartCreatedInstance(this); + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecLocale; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.Locale.pigeon_defaultConstructor'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel + .send([pigeonVar_instanceIdentifier, identifier]); + () async { + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + }(); + } + + /// Constructs [Locale] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + Locale.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + }); + + late final _PigeonInternalProxyApiBaseCodec _pigeonVar_codecLocale = + _PigeonInternalProxyApiBaseCodec(pigeon_instanceManager); + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + Locale Function()? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + 'dev.flutter.pigeon.geocoding_darwin.Locale.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.Locale.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.Locale.pigeon_newInstance was null, expected non-null int.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call() ?? + Locale.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + /// The identifier of the locale. + Future getIdentifier() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecLocale; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.Locale.getIdentifier'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as String?)!; + } + } + + @override + Locale pigeon_copy() { + return Locale.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + ); + } +} + +/// The root class of most Objective-C class hierarchies, from which subclasses +/// inherit a basic interface to the runtime system and the ability to behave as +/// Objective-C objects. +/// +/// See https://developer.apple.com/documentation/objectivec/nsobject. +class NSObject extends PigeonInternalProxyApiBaseClass { + NSObject({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + this.observeValue, + }) { + final int pigeonVar_instanceIdentifier = + pigeon_instanceManager.addDartCreatedInstance(this); + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecNSObject; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.NSObject.pigeon_defaultConstructor'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([pigeonVar_instanceIdentifier]); + () async { + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + }(); + } + + /// Constructs [NSObject] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + NSObject.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + this.observeValue, + }); + + late final _PigeonInternalProxyApiBaseCodec _pigeonVar_codecNSObject = + _PigeonInternalProxyApiBaseCodec(pigeon_instanceManager); + + /// Informs the observing object when the value at the specified key path + /// relative to the observed object has changed. + /// + /// For the associated Native object to be automatically garbage collected, + /// it is required that the implementation of this `Function` doesn't have a + /// strong reference to the encapsulating class instance. When this `Function` + /// references a non-local variable, it is strongly recommended to access it + /// with a `WeakReference`: + /// + /// ```dart + /// final WeakReference weakMyVariable = WeakReference(myVariable); + /// final NSObject instance = NSObject( + /// observeValue: (NSObject pigeon_instance, ...) { + /// print(weakMyVariable?.target); + /// }, + /// ); + /// ``` + /// + /// Alternatively, [PigeonInstanceManager.removeWeakReference] can be used to + /// release the associated Native object manually. + final void Function( + NSObject pigeon_instance, + String? keyPath, + NSObject? object, + Map? change, + )? observeValue; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + NSObject Function()? pigeon_newInstance, + void Function( + NSObject pigeon_instance, + String? keyPath, + NSObject? object, + Map? change, + )? observeValue, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + 'dev.flutter.pigeon.geocoding_darwin.NSObject.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.NSObject.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.NSObject.pigeon_newInstance was null, expected non-null int.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call() ?? + NSObject.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + + { + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + 'dev.flutter.pigeon.geocoding_darwin.NSObject.observeValue', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.NSObject.observeValue was null.'); + final List args = (message as List?)!; + final NSObject? arg_pigeon_instance = (args[0] as NSObject?); + assert(arg_pigeon_instance != null, + 'Argument for dev.flutter.pigeon.geocoding_darwin.NSObject.observeValue was null, expected non-null NSObject.'); + final String? arg_keyPath = (args[1] as String?); + final NSObject? arg_object = (args[2] as NSObject?); + final Map? arg_change = + (args[3] as Map?) + ?.cast(); + try { + (observeValue ?? arg_pigeon_instance!.observeValue)?.call( + arg_pigeon_instance!, arg_keyPath, arg_object, arg_change); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + /// Registers the observer object to receive KVO notifications for the key + /// path relative to the object receiving this message. + Future addObserver( + NSObject observer, + String keyPath, + List options, + ) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecNSObject; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.NSObject.addObserver'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, observer, keyPath, options]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + /// Stops the observer object from receiving change notifications for the + /// property specified by the key path relative to the object receiving this + /// message. + Future removeObserver( + NSObject observer, + String keyPath, + ) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecNSObject; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.geocoding_darwin.NSObject.removeObserver'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, observer, keyPath]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + @override + NSObject pigeon_copy() { + return NSObject.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + observeValue: observeValue, + ); + } +} + diff --git a/geocoding_darwin/lib/src/clgeocoder/clgeocoder_proxy.dart b/geocoding_darwin/lib/src/clgeocoder/clgeocoder_proxy.dart new file mode 100644 index 0000000..1196874 --- /dev/null +++ b/geocoding_darwin/lib/src/clgeocoder/clgeocoder_proxy.dart @@ -0,0 +1,33 @@ +import 'clgeocoder.g.dart'; + +/// Handles constructing objects and calling static methods for the Darwin +/// CLGeocder native library. +/// +/// This class provides dependency injection for the implementations of the +/// platform interface classes. Improving the ease of unit testing and/or +/// overriding the underlying Darwin classes. +/// +/// By default each function calls the default constructor of the class it +/// intends to return. +class CLGeocoderProxy { + /// Creates a [CLGeocoderProxy]. + const CLGeocoderProxy({ + this.newCLGeocoder = CLGeocoder.new, + this.newNSObject = NSObject.new, + }); + + /// Constructs [CLGeocoder]. + final CLGeocoder Function() newCLGeocoder; + + /// Constructs [NSObject]. + final NSObject Function({ + void Function( + NSObject, + String?, + NSObject?, + Map?, + )? + observeValue, + }) + newNSObject; +} diff --git a/geocoding_darwin/lib/src/geocoding_darwin.dart b/geocoding_darwin/lib/src/geocoding_darwin.dart new file mode 100644 index 0000000..af1f04d --- /dev/null +++ b/geocoding_darwin/lib/src/geocoding_darwin.dart @@ -0,0 +1,157 @@ +import 'package:flutter/widgets.dart' as flt; +import 'package:geocoding_darwin/src/clgeocoder/clgeocoder.g.dart'; +import 'package:geocoding_darwin/src/clgeocoder/clgeocoder_proxy.dart'; +import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; + +export 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; + +/// Object specifying creation parameters for a [GeocodingDarwin] instance. +@flt.immutable +class GeocodingDarwinCreationParams extends GeocodingCreationParams { + //// Creates a [GeocodingDarwinCreationParams]. + GeocodingDarwinCreationParams({ + @flt.visibleForTesting + this.coreLocationGeocoderProxy = const CLGeocoderProxy(), + @flt.visibleForTesting PigeonInstanceManager? instanceManager, + }) : _instanceManager = instanceManager ?? PigeonInstanceManager.instance; + + /// Creates a [GeocodingDarwinCreationParams] using a + /// [GeocodingCreationParams]. + GeocodingDarwinCreationParams.fromGeocodingCreationParams( + GeocodingCreationParams params, { + @flt.visibleForTesting + CLGeocoderProxy coreLocationGeocoderProxy = const CLGeocoderProxy(), + @flt.visibleForTesting PigeonInstanceManager? instanceManager, + }) : this( + coreLocationGeocoderProxy: coreLocationGeocoderProxy, + instanceManager: instanceManager, + ); + + /// Handles constructing objects and calling static method for the Core + /// Location Geocoder native library. + @flt.visibleForTesting + final CLGeocoderProxy coreLocationGeocoderProxy; + + // Maintains instances used to communicate with the native objects they + // represent. + final PigeonInstanceManager _instanceManager; +} + +/// An implementation of the [Geocoding] interface for the Darwin (iOS, macOS) +/// platforms. +class GeocodingDarwin extends Geocoding { + /// Creates a [GeocodingDarwin]. + GeocodingDarwin(GeocodingCreationParams params) + : super.implementation( + (params is GeocodingDarwinCreationParams) + ? params + : GeocodingDarwinCreationParams.fromGeocodingCreationParams(params), + ); + + late final CLGeocoder _coreLocationGeocoder = _darwinParams + .coreLocationGeocoderProxy + .newCLGeocoder(); + + GeocodingDarwinCreationParams get _darwinParams => + params as GeocodingDarwinCreationParams; + + @override + Future> locationFromAddress( + String address, { + flt.Locale? locale, + }) async { + final Locale? nativeLocale = locale != null + ? Locale(identifier: locale.toString()) + : null; + + final List? placemarks = await _coreLocationGeocoder + .geocodeAddressString(address, nativeLocale); + + if (placemarks == null) { + return []; + } + + final Iterable> futures = placemarks.map( + (CLPlacemark placemark) async => await placemark.toDartLocation(), + ); + + return (await Future.wait(futures)).nonNulls.toList(); + } + + @override + Future isPresent() => Future.value(true); + + @override + Future> placemarkFromAddress( + String address, { + flt.Locale? locale, + }) async { + final Locale? nativeLocale = locale != null + ? Locale(identifier: locale.toString()) + : null; + + final List? placemarks = await _coreLocationGeocoder + .geocodeAddressString(address, nativeLocale); + + return placemarks + ?.map((CLPlacemark placemark) => placemark.toDartPlacemark()) + .toList() ?? + []; + } + + @override + Future> placemarkFromCoordinates( + double latitude, + double longitude, { + flt.Locale? locale, + }) async { + final Locale? nativeLocale = locale != null + ? Locale(identifier: locale.toString()) + : null; + + final List? placemarks = await _coreLocationGeocoder + .reverseGeocodeLocation( + CLLocation(latitude: latitude, longitude: longitude), + nativeLocale, + ); + + return placemarks + ?.map((CLPlacemark placemark) => placemark.toDartPlacemark()) + .toList() ?? + []; + } +} + +extension _CLPlacemarkExtensions on CLPlacemark { + Placemark toDartPlacemark() => Placemark( + name: name, + street: postalAddress?.street, + isoCountryCode: isoCountryCode, + country: country, + postalCode: postalAddress?.postalCode ?? postalCode, + administrativeArea: administrativeArea, + subAdministrativeArea: subAdministrativeArea, + locality: locality, + subLocality: subLocality, + thoroughfare: thoroughfare, + subThoroughfare: subThoroughfare, + ); + + Future toDartLocation() async { + final CLLocation? localLocation = location; + + if (localLocation == null) { + return null; + } + + final CLLocationCoordinate2D coordinate = await localLocation + .getCoordinate(); + final int timestamp = await localLocation.getTimestamp(); + + return Location( + latitude: coordinate.latitude, + longitude: coordinate.longitude, + timestamp: DateTime.fromMillisecondsSinceEpoch(timestamp), + ); + } +} diff --git a/geocoding_darwin/lib/src/geocoding_darwin_factory.dart b/geocoding_darwin/lib/src/geocoding_darwin_factory.dart new file mode 100644 index 0000000..d27dc18 --- /dev/null +++ b/geocoding_darwin/lib/src/geocoding_darwin_factory.dart @@ -0,0 +1,17 @@ +import 'package:geocoding_platform_interface/geocoding_platform_interface.dart'; + +import 'geocoding_darwin.dart'; + +/// Implementation of [GeocodingPlatformFactory] for the Darwin (Apple) +/// platform. +class GeocodingDarwinFactory extends GeocodingPlatformFactory { + /// Registers this class as the default instance of the + /// [GeocodingPlatformFactory]. + static void registerWith() {} + + @override + Geocoding createGeocoding(GeocodingCreationParams params) { + // TODO: implement createGeocoding + return super.createGeocoding(params); + } +} diff --git a/geocoding_darwin/pigeons/clgeocoder.dart b/geocoding_darwin/pigeons/clgeocoder.dart new file mode 100644 index 0000000..a6e7470 --- /dev/null +++ b/geocoding_darwin/pigeons/clgeocoder.dart @@ -0,0 +1,344 @@ +// ignore_for_file: avoid_unused_constructor_parameters + +import 'package:pigeon/pigeon.dart'; + +@ConfigurePigeon( + PigeonOptions( + dartOut: 'lib/src/clgeocoder/clgeocoder.g.dart', + swiftOut: 'darwin/geocoding_darwin/Sources/CLGeocoder/CLGeocoderLibrary.g.swift', + ), +) +/// The floor of a building on which the user’s device is located. +/// +/// See https://developer.apple.com/documentation/corelocation/clfloor +@ProxyApi(swiftOptions: SwiftProxyApiOptions(import: 'CoreLocation')) +abstract class CLFloor extends NSObject { + /// The logical floor of the building. + late int level; +} + +/// An object that displays interactive web content, such as for an in-app +/// browser. +/// +/// See https://developer.apple.com/documentation/webkit/wkwebview. +@ProxyApi( + swiftOptions: SwiftProxyApiOptions( + import: 'CoreLocation', + name: 'CLGeocoder', + ), +) +abstract class CLGeocoder extends NSObject { + /// Creates a [CLGeocoder].localLocation. + CLGeocoder(); + + /// Submits a forward-geocoding requesting using the specified address string + /// and locale information. + @async + List? geocodeAddressString(String address, {Locale? locale}); + + /// Submits a forward-geocoding requesting using the specified locale and + /// Contacts framework information. + @async + List? geocodePostalAddress( + CNPostalAddress postalAddress, { + Locale? locale, + }); + + /// Submits a reverse-geocoding request for the specified location. + @async + List? reverseGeocodeLocation( + CLLocation location, { + Locale? locale, + }); +} + +/// The latitude, longitude, and course information reported by the system. +/// +/// See https://developer.apple.com/documentation/corelocation/cllocation +@ProxyApi(swiftOptions: SwiftProxyApiOptions(import: 'CoreLocation')) +abstract class CLLocation extends NSObject { + /// Creates a [CLLocation] based on the supplied coordinates. + CLLocation(double latitude, double longitude); + + /// The geographical coordinate information. + CLLocationCoordinate2D getCoordinate(); + + /// The altitude above mean sea level associated with a location, measured in + /// meters. + double getAltitude(); + + /// The altitude as a height above the World Geodetic System 1984 (WGS84) + /// ellipsoid, measured in meters. + double getEllipsoidalAltitude(); + + /// The logical floor of the building in which the user is located. + CLFloor? getFloor(); + + /// The time at which this location was determined (in seconds since epoch). + int getTimestamp(); + + /// Information about the source that provides the location. + CLLocationSourceInformation? getSourceInformation(); + + /// The radius of uncertainty for the location, measured in meters. + double getHorizontalAccuracy(); + + /// The validity of the altitude values, and their estimated uncertainty, + /// measured in meters. + double getVerticalAccuracy(); + + /// The instantaneous speed of the device, measured in meters per second. + double getSpeed(); + + /// The accuracy of the speed value, measured in meters per second. + double getSpeedAccuracy(); + + /// The direction in which the device is traveling, measured in degrees and + /// relative to due north. + double getCourse(); + + /// The accuracy of the course value, measured in degrees. + double getCourseAccuracy(); + + /// Returns the distance (measured in meters) from the current object’s + /// location to the specified location. + double distance(CLLocation from); +} + +/// The latitude and longitude associated with a location, specified using the +/// WGS 84 reference frame. +/// +/// See https://developer.apple.com/documentation/corelocation/cllocationcoordinate2d +@ProxyApi( + swiftOptions: SwiftProxyApiOptions( + import: 'CoreLocation', + name: 'CLLocationCoordinate2DWrapper', + ), +) +abstract class CLLocationCoordinate2D extends NSObject { + /// The latitude in degrees. + late double latitude; + + /// The longitude in degrees. + late double longitude; +} + +/// Information about the source that provides a location. +/// +/// See https://developer.apple.com/documentation/corelocation/cllocationsourceinformation +@ProxyApi( + swiftOptions: SwiftProxyApiOptions( + import: 'CoreLocation', + minIosApi: '15.0.0', + minMacosApi: '12.0.0', + ), +) +abstract class CLLocationSourceInformation extends NSObject { + /// A Boolean value that indicates whether the system receives the location + /// from an external accessory. + late bool isProducedByAccessory; + + /// A Boolean value that indicates whether the system generates the location + /// using on-device software simulation. + late bool isSimulatedBySoftware; +} + +/// A user-friendly description of a geographic coordinate, often containing the +/// name of the place, its address, and other relevant information. +/// +/// See https://developer.apple.com/documentation/corelocation/clplacemark +@ProxyApi(swiftOptions: SwiftProxyApiOptions(import: 'CoreLocation')) +abstract class CLPlacemark extends NSObject { + /// The [CLLocation] containing latitude and longitude information. + late CLLocation? location; + + /// The name of the placemark. + late String? name; + + /// The street address associated with the placemark. + late String? thoroughfare; + + /// Additional street-level information for the placemark. + late String? subThoroughfare; + + /// The city associated with the placemark. + late String? locality; + + /// Additional city-level information for the placemark. + late String? subLocality; + + /// The state or province associated with the placemark. + late String? administrativeArea; + + /// Additional administrative area information for the placemark. + late String? subAdministrativeArea; + + /// The postal code associated with the placemark. + late String? postalCode; + + /// The abbreviated country or region name. + late String? isoCountryCode; + + /// The name of the country or region associated with the placemark. + late String? country; + + /// The postal address associated with the location, formatted for use with the Contacts framework. + late CNPostalAddress? postalAddress; +} + +/// An immutable representation of the postal address for a contact. +/// +/// See https://developer.apple.com/documentation/Contacts/CNPostalAddress +@ProxyApi(swiftOptions: SwiftProxyApiOptions(import: 'Contacts')) +abstract class CNPostalAddress extends NSObject { + /// The street name in a postal address. + late String street; + + /// The city name in a postal address. + late String city; + + /// The state name in a postal address. + late String state; + + /// The postal code in a postal address. + late String postalCode; + + /// The country or region name in a postal address. + late String country; + + /// The ISO country code for the country or region in a postal address, using + /// the ISO 3166-1 alpha-2 standard. + late String isoCountryCode; + + /// The subadministrative area (such as a county or other region) in a postal + /// address. + late String subAdministrativeArea; + + /// Additional information associated with the location, typically defined at + /// the city or town level, in a postal address. + late String subLocality; +} + +/// Information about linguistic, cultural, and technological conventions for +/// use in formatting data for presentation. +/// +/// See https://developer.apple.com/documentation/Foundation/Locale +@ProxyApi(swiftOptions: SwiftProxyApiOptions(name: 'LocaleWrapper')) +abstract class Locale { + /// Creates a [Locale] matching the given identifier. + Locale(String identifier); + + /// The identifier of the locale. + String getIdentifier(); +} + +/// The values that can be returned in a change dictionary. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions. +enum KeyValueObservingOptions { + /// Indicates that the change dictionary should provide the new attribute + /// value, if applicable. + newValue, + + /// Indicates that the change dictionary should contain the old attribute + /// value, if applicable. + oldValue, + + /// If specified, a notification should be sent to the observer immediately, + /// before the observer registration method even returns. + initialValue, + + /// Whether separate notifications should be sent to the observer before and + /// after each change, instead of a single notification after the change. + priorNotification, +} + +/// The kinds of changes that can be observed. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvaluechange. +enum KeyValueChange { + /// Indicates that the value of the observed key path was set to a new value. + setting, + + /// Indicates that an object has been inserted into the to-many relationship + /// that is being observed. + insertion, + + /// Indicates that an object has been removed from the to-many relationship + /// that is being observed. + removal, + + /// Indicates that an object has been replaced in the to-many relationship + /// that is being observed. + replacement, + + /// The value is not recognized by the wrapper. + unknown, +} + +/// The keys that can appear in the change dictionary. +/// +/// See https://developer.apple.com/documentation/foundation/nskeyvaluechangekey. +enum KeyValueChangeKey { + /// If the value of the `KeyValueChangeKey.kind` entry is + /// `KeyValueChange.insertion`, `KeyValueChange.removal`, or + /// `KeyValueChange.replacement`, the value of this key is a Set object that + /// contains the indexes of the inserted, removed, or replaced objects. + indexes, + + /// An object that contains a value corresponding to one of the + /// `KeyValueChange` enum, indicating what sort of change has occurred. + kind, + + /// If the value of the `KeyValueChange.kind` entry is + /// `KeyValueChange.setting, and `KeyValueObservingOptions.newValue` was + /// specified when the observer was registered, the value of this key is the + /// new value for the attribute. + newValue, + + /// If the `KeyValueObservingOptions.priorNotification` option was specified + /// when the observer was registered this notification is sent prior to a + /// change. + notificationIsPrior, + + /// If the value of the `KeyValueChange.kind` entry is + /// `KeyValueChange.setting`, and `KeyValueObservingOptions.old` was specified + /// when the observer was registered, the value of this key is the value + /// before the attribute was changed. + oldValue, + + /// The value is not recognized by the wrapper. + unknown, +} + +/// The root class of most Objective-C class hierarchies, from which subclasses +/// inherit a basic interface to the runtime system and the ability to behave as +/// Objective-C objects. +/// +/// See https://developer.apple.com/documentation/objectivec/nsobject. +@ProxyApi() +abstract class NSObject { + NSObject(); + + /// Informs the observing object when the value at the specified key path + /// relative to the observed object has changed. + late void Function( + String? keyPath, + NSObject? object, + Map? change, + )? + observeValue; + + /// Registers the observer object to receive KVO notifications for the key + /// path relative to the object receiving this message. + void addObserver( + NSObject observer, + String keyPath, + List options, + ); + + /// Stops the observer object from receiving change notifications for the + /// property specified by the key path relative to the object receiving this + /// message. + void removeObserver(NSObject observer, String keyPath); +} diff --git a/geocoding_darwin/pubspec.yaml b/geocoding_darwin/pubspec.yaml new file mode 100644 index 0000000..878c1c3 --- /dev/null +++ b/geocoding_darwin/pubspec.yaml @@ -0,0 +1,35 @@ +name: geocoding_darwin +description: |- + A Flutter Geocoding plugin which provides easy geocoding and + reverse-geocoding features for iOS and macOS. +version: 0.0.1 +repository: https://github.com/baseflow/flutter-geocoding + +publish_to: none + +environment: + sdk: ^3.8.1 + flutter: ">=3.7.0" + +dependencies: + flutter: + sdk: flutter + geocoding_platform_interface: + path: ../geocoding_platform_interface + pigeon: ^25.5.0 + plugin_platform_interface: ^2.0.2 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + +flutter: + plugin: + platforms: + ios: + pluginClass: GeocodingDarwinPlugin + sharedDarwinSource: true + macos: + pluginClass: GeocodingDarwinPlugin + sharedDarwinSource: true From 791969a7b7234de461d185845175f1dc764dd1ea Mon Sep 17 00:00:00 2001 From: Maurits van Beusekom Date: Fri, 11 Jul 2025 11:30:44 +0200 Subject: [PATCH 3/4] Update example app --- geocoding_darwin/example/lib/main.dart | 347 ++- .../lib/plugin_example/geocode_page.dart | 194 -- .../example/lib/template/globals.dart | 37 - .../example/lib/template/info_page.dart | 101 - .../macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../ephemeral/Flutter-Generated.xcconfig | 4 +- .../Package.swift | 2 +- geocoding_darwin/example/macos/Podfile | 42 - .../Local Podspecs/FlutterMacOS.podspec.json | 20 - .../geocoding_darwin.podspec.json | 46 - .../url_launcher_macos.podspec.json | 34 - .../macos/Pods/Pods.xcodeproj/project.pbxproj | 2309 ----------------- .../xcschemes/FlutterMacOS.xcscheme | 58 - .../xcschemes/Pods-Runner.xcscheme | 58 - .../xcschemes/Pods-RunnerTests.xcscheme | 58 - ...g_darwin-geocoding_darwin_privacy.xcscheme | 58 - .../xcschemes/geocoding_darwin.xcscheme | 58 - ..._macos-url_launcher_macos_privacy.xcscheme | 58 - .../xcschemes/url_launcher_macos.xcscheme | 58 - .../xcschemes/xcschememanagement.plist | 46 - .../FlutterMacOS/FlutterMacOS.debug.xcconfig | 13 - .../FlutterMacOS.release.xcconfig | 13 - .../Pods-Runner/Pods-Runner-Info.plist | 26 - .../Pods-Runner-acknowledgements.markdown | 57 - .../Pods-Runner-acknowledgements.plist | 93 - .../Pods-Runner/Pods-Runner-dummy.m | 5 - ...er-frameworks-Debug-input-files.xcfilelist | 3 - ...r-frameworks-Debug-output-files.xcfilelist | 2 - ...-frameworks-Profile-input-files.xcfilelist | 3 - ...frameworks-Profile-output-files.xcfilelist | 2 - ...-frameworks-Release-input-files.xcfilelist | 3 - ...frameworks-Release-output-files.xcfilelist | 2 - .../Pods-Runner/Pods-Runner-frameworks.sh | 192 -- .../Pods-Runner/Pods-Runner-umbrella.h | 16 - .../Pods-Runner/Pods-Runner.debug.xcconfig | 16 - .../Pods-Runner/Pods-Runner.modulemap | 6 - .../Pods-Runner/Pods-Runner.profile.xcconfig | 16 - .../Pods-Runner/Pods-Runner.release.xcconfig | 16 - .../Pods-RunnerTests-Info.plist | 26 - ...Pods-RunnerTests-acknowledgements.markdown | 3 - .../Pods-RunnerTests-acknowledgements.plist | 29 - .../Pods-RunnerTests/Pods-RunnerTests-dummy.m | 5 - .../Pods-RunnerTests-umbrella.h | 16 - .../Pods-RunnerTests.debug.xcconfig | 13 - .../Pods-RunnerTests.modulemap | 6 - .../Pods-RunnerTests.profile.xcconfig | 13 - .../Pods-RunnerTests.release.xcconfig | 13 - ...darwin_privacy-geocoding_darwin-Info.plist | 24 - .../geocoding_darwin-Info.plist | 26 - .../geocoding_darwin/geocoding_darwin-dummy.m | 5 - .../geocoding_darwin-prefix.pch | 12 - .../geocoding_darwin-umbrella.h | 16 - .../geocoding_darwin.debug.xcconfig | 18 - .../geocoding_darwin.modulemap | 6 - .../geocoding_darwin.release.xcconfig | 18 - ...acos_privacy-url_launcher_macos-Info.plist | 24 - .../url_launcher_macos-Info.plist | 26 - .../url_launcher_macos-dummy.m | 5 - .../url_launcher_macos-prefix.pch | 12 - .../url_launcher_macos-umbrella.h | 16 - .../url_launcher_macos.debug.xcconfig | 16 - .../url_launcher_macos.modulemap | 6 - .../url_launcher_macos.release.xcconfig | 16 - .../macos/Runner.xcodeproj/project.pbxproj | 117 +- .../xcshareddata/xcschemes/Runner.xcscheme | 18 + geocoding_darwin/example/pubspec.yaml | 5 +- .../res/images/baseflow_logo_def_light-02.png | Bin 22696 -> 0 bytes .../res/images/poweredByBaseflowLogoLight.png | Bin 4561 -> 0 bytes .../images/poweredByBaseflowLogoLight@2x.png | Bin 10820 -> 0 bytes .../images/poweredByBaseflowLogoLight@3x.png | Bin 17550 -> 0 bytes 71 files changed, 254 insertions(+), 4330 deletions(-) delete mode 100644 geocoding_darwin/example/lib/plugin_example/geocode_page.dart delete mode 100644 geocoding_darwin/example/lib/template/globals.dart delete mode 100644 geocoding_darwin/example/lib/template/info_page.dart delete mode 100644 geocoding_darwin/example/macos/Podfile delete mode 100644 geocoding_darwin/example/macos/Pods/Local Podspecs/FlutterMacOS.podspec.json delete mode 100644 geocoding_darwin/example/macos/Pods/Local Podspecs/geocoding_darwin.podspec.json delete mode 100644 geocoding_darwin/example/macos/Pods/Local Podspecs/url_launcher_macos.podspec.json delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/FlutterMacOS.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-Runner.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-RunnerTests.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin-geocoding_darwin_privacy.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos-url_launcher_macos_privacy.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos.xcscheme delete mode 100644 geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.debug.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.release.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-Info.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.markdown delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-input-files.xcfilelist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-output-files.xcfilelist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-input-files.xcfilelist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-output-files.xcfilelist delete mode 100755 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-umbrella.h delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.modulemap delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.markdown delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-dummy.m delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-umbrella.h delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-dummy.m delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-umbrella.h delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.debug.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.modulemap delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.release.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-dummy.m delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-umbrella.h delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.debug.xcconfig delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.modulemap delete mode 100644 geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.release.xcconfig delete mode 100644 geocoding_darwin/example/res/images/baseflow_logo_def_light-02.png delete mode 100644 geocoding_darwin/example/res/images/poweredByBaseflowLogoLight.png delete mode 100644 geocoding_darwin/example/res/images/poweredByBaseflowLogoLight@2x.png delete mode 100644 geocoding_darwin/example/res/images/poweredByBaseflowLogoLight@3x.png diff --git a/geocoding_darwin/example/lib/main.dart b/geocoding_darwin/example/lib/main.dart index fdb3997..231cdd1 100644 --- a/geocoding_darwin/example/lib/main.dart +++ b/geocoding_darwin/example/lib/main.dart @@ -1,164 +1,235 @@ +import 'package:baseflow_plugin_template/baseflow_plugin_template.dart'; import 'package:flutter/material.dart'; +import 'package:geocoding_darwin/geocoding_darwin.dart'; -import 'template/globals.dart'; +/// Defines the main theme color. +final MaterialColor themeMaterialColor = + BaseflowPluginExample.createMaterialColor( + const Color.fromRGBO(48, 49, 60, 1), + ); void main() { - runApp(BaseflowPluginExample()); + runApp(const GeocodeWidget()); } -/// A Flutter application demonstrating the functionality of this plugin -class BaseflowPluginExample extends StatelessWidget { - /// [MaterialColor] to be used in the app [ThemeData] - final MaterialColor themeMaterialColor = - createMaterialColor(const Color.fromRGBO(48, 49, 60, 1)); - - /// Constructs the [BaseflowPluginExample] class - BaseflowPluginExample({super.key}); +/// Example [Widget] showing the use of the Geocode plugin +class GeocodeWidget extends StatefulWidget { + /// Constructs the [GeocodeWidget] class + const GeocodeWidget({super.key}); - @override - Widget build(BuildContext context) { - final ThemeData theme = ThemeData(); - return MaterialApp( - title: 'Baseflow $pluginName', - theme: theme.copyWith( - scaffoldBackgroundColor: const Color.fromRGBO(48, 49, 60, 0.8), - colorScheme: theme.colorScheme.copyWith( - secondary: Colors.white60, - primary: createMaterialColor(const Color.fromRGBO(48, 49, 60, 1)), - surface: const Color.fromRGBO(48, 49, 60, 0.8), - ), - bottomAppBarTheme: theme.bottomAppBarTheme.copyWith( - color: const Color.fromRGBO(57, 58, 71, 1), - ), - buttonTheme: ButtonThemeData( - buttonColor: themeMaterialColor.shade500, - disabledColor: themeMaterialColor.withRed(200), - splashColor: themeMaterialColor.shade50, - textTheme: ButtonTextTheme.primary, - ), - hintColor: themeMaterialColor.shade500, - textTheme: const TextTheme( - bodyLarge: TextStyle( - color: Colors.white, - fontSize: 16, - height: 1.3, - ), - bodyMedium: TextStyle( - color: Colors.white, - fontSize: 18, - height: 1.2, - ), - labelLarge: TextStyle(color: Colors.white), - displayLarge: TextStyle( - color: Colors.white, - fontSize: 18, - ), - ), - visualDensity: VisualDensity.adaptivePlatformDensity, - inputDecorationTheme: const InputDecorationTheme( - fillColor: Color.fromRGBO(37, 37, 37, 1), - filled: true, - ), - ), - home: const AppHome(title: 'Baseflow $pluginName example app'), - ); + /// Utility method to create a page with the Baseflow templating. + static ExamplePage createPage() { + return ExamplePage(Icons.location_on, (context) => const GeocodeWidget()); } - /// Creates a [MaterialColor] based on the supplied [Color] - static MaterialColor createMaterialColor(Color color) { - final strengths = [.05]; - final swatch = {}; - final r = color.r, g = color.g, b = color.b; - - for (var i = 1; i < 10; i++) { - strengths.add(0.1 * i); - } - for (var strength in strengths) { - final ds = 0.5 - strength; - swatch[(strength * 1000).round()] = Color.fromRGBO( - (r + ((ds < 0 ? r : (1.0 - r)) * ds) * 255).round(), - (g + ((ds < 0 ? g : (1.0 - g)) * ds) * 255).round(), - (b + ((ds < 0 ? b : (1.0 - b)) * ds) * 255).round(), - 1, - ); - } - return MaterialColor(color.toARGB32(), swatch); - } + @override + State createState() => _GeocodeWidgetState(); } -/// A Flutter example demonstrating how the [pluginName] plugin could be used -class AppHome extends StatefulWidget { - /// Constructs the [AppHome] class - const AppHome({super.key, required this.title}); - - /// The [title] of the application, which is shown in the application's - /// title bar. - final String title; +class _GeocodeWidgetState extends State { + final TextEditingController _addressController = TextEditingController(); + final TextEditingController _latitudeController = TextEditingController(); + final TextEditingController _longitudeController = TextEditingController(); + String _output = ''; + Locale? _locale; + final GeocodingDarwin _geocoding = GeocodingDarwin( + GeocodingDarwinCreationParams(), + ); @override - State createState() => _AppHomeState(); -} + void initState() { + _addressController.text = 'Gronausestraat 710, Enschede'; + _latitudeController.text = '52.2165157'; + _longitudeController.text = '6.9437819'; -class _AppHomeState extends State { - final _pageController = PageController(initialPage: 0); - var _currentPage = 0; + super.initState(); + } @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).appBarTheme.backgroundColor, - title: Center( - child: Image.asset( - 'res/images/baseflow_logo_def_light-02.png', - width: 140, - ), - ), - ), - body: PageView( - controller: _pageController, - children: pages, - onPageChanged: (page) { - setState(() { - _currentPage = page; - }); - }, - ), - bottomNavigationBar: _bottomAppBar(), - ); - } + return BaseflowPluginExample( + pluginName: 'geocoding_darwin', + githubURL: 'https://github.com/Baseflow/flutter-geocoding', + pubDevURL: 'https://pub.dev/packages/geocoding', + pages: [ + ExamplePage(Icons.location_on, (BuildContext context) { + return Scaffold( + backgroundColor: Theme.of(context).colorScheme.surface, + body: Padding( + padding: EdgeInsets.symmetric(horizontal: 24, vertical: 24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + DropdownMenu( + leadingIcon: Icon(Icons.language, color: Colors.white), + hintText: 'Locale', + initialSelection: Localizations.localeOf(context), + dropdownMenuEntries: >[ + DropdownMenuEntry( + value: Localizations.localeOf(context), + label: 'Default system locale', + ), + DropdownMenuEntry( + value: Locale('en_US'), + label: 'English (US)', + ), + DropdownMenuEntry( + value: Locale('nl_NL'), + label: 'Nederlands (NL)', + ), + ], + onSelected: (Locale? value) => + setState(() => _locale = value), + ), + ], + ), + const Padding(padding: EdgeInsets.only(top: 32)), + Row( + children: [ + Expanded( + child: TextField( + autocorrect: false, + controller: _latitudeController, + style: Theme.of(context).textTheme.bodyMedium, + decoration: const InputDecoration( + hintText: 'Latitude', + ), + keyboardType: TextInputType.number, + ), + ), + const SizedBox(width: 20), + Expanded( + child: TextField( + autocorrect: false, + controller: _longitudeController, + style: Theme.of(context).textTheme.bodyMedium, + decoration: const InputDecoration( + hintText: 'Longitude', + ), + keyboardType: TextInputType.number, + ), + ), + ], + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Look up address'), + onPressed: () { + final latitude = double.parse(_latitudeController.text); + final longitude = double.parse( + _longitudeController.text, + ); - BottomAppBar _bottomAppBar() { - return BottomAppBar( - elevation: 5, - color: Theme.of(context).bottomAppBarTheme.color, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: List.unmodifiable(() sync* { - for (var i = 0; i < pages.length; i++) { - yield Expanded( - child: IconButton( - iconSize: 30, - icon: Icon(icons.elementAt(i)), - color: _bottomAppBarIconColor(i), - onPressed: () => _animateToPage(i), + _geocoding + .placemarkFromCoordinates( + latitude, + longitude, + locale: _locale, + ) + .then((placemarks) { + var output = 'No results found.'; + if (placemarks.isNotEmpty) { + output = placemarks[0].toDisplayString(); + } + + setState(() { + _output = output; + }); + }); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 32)), + TextField( + autocorrect: false, + controller: _addressController, + style: Theme.of(context).textTheme.bodyMedium, + decoration: const InputDecoration(hintText: 'Address'), + keyboardType: TextInputType.text, + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Look up location'), + onPressed: () { + _geocoding + .locationFromAddress(_addressController.text) + .then((locations) { + var output = 'No results found.'; + if (locations.isNotEmpty) { + output = locations[0].toDisplayString(); + } + + setState(() { + _output = output; + }); + }); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Center( + child: ElevatedButton( + child: const Text('Is present'), + onPressed: () { + _geocoding.isPresent().then((isPresent) { + var output = isPresent + ? "Geocoder is present" + : "Geocoder is not present"; + setState(() { + _output = output; + }); + }); + }, + ), + ), + const Padding(padding: EdgeInsets.only(top: 8)), + Expanded( + child: SingleChildScrollView( + child: SizedBox( + width: MediaQuery.of(context).size.width, + child: Text(_output), + ), + ), + ), + ], ), - ); - } - }()), - ), + ), + ); + }), + ], ); } +} - void _animateToPage(int page) { - _pageController.animateToPage(page, - duration: const Duration(milliseconds: 200), curve: Curves.linear); +extension _PlacemarkExtensions on Placemark { + String toDisplayString() { + return ''' + Name: $name, + Street: $street, + ISO Country Code: $isoCountryCode, + Country: $country, + Postal code: $postalCode, + Administrative area: $administrativeArea, + Subadministrative area: $subAdministrativeArea, + Locality: $locality, + Sublocality: $subLocality, + Thoroughfare: $thoroughfare, + Subthoroughfare: $subThoroughfare'''; } +} - Color _bottomAppBarIconColor(int page) { - return _currentPage == page - ? Colors.white - : Theme.of(context).colorScheme.secondary; +extension _LocationExtensions on Location { + String toDisplayString() { + return ''' + Latitude: $latitude, + Longitude: $longitude, + Timestamp: $timestamp'''; } } diff --git a/geocoding_darwin/example/lib/plugin_example/geocode_page.dart b/geocoding_darwin/example/lib/plugin_example/geocode_page.dart deleted file mode 100644 index 2948797..0000000 --- a/geocoding_darwin/example/lib/plugin_example/geocode_page.dart +++ /dev/null @@ -1,194 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:geocoding_darwin/geocoding_darwin.dart'; - -import '../template/globals.dart'; - -/// Example [Widget] showing the use of the Geocode plugin -class GeocodeWidget extends StatefulWidget { - /// Constructs the [GeocodeWidget] class - const GeocodeWidget({super.key}); - - @override - State createState() => _GeocodeWidgetState(); -} - -class _GeocodeWidgetState extends State { - final TextEditingController _addressController = TextEditingController(); - final TextEditingController _latitudeController = TextEditingController(); - final TextEditingController _longitudeController = TextEditingController(); - String _output = ''; - Locale? _locale; - final GeocodingDarwin _geocoding = GeocodingDarwin( - GeocodingDarwinCreationParams(), - ); - - @override - void initState() { - _addressController.text = 'Gronausestraat 710, Enschede'; - _latitudeController.text = '52.2165157'; - _longitudeController.text = '6.9437819'; - - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Padding( - padding: defaultHorizontalPadding + defaultVerticalPadding, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - const Padding(padding: EdgeInsets.only(top: 32)), - Row( - children: [ - Expanded( - child: TextField( - autocorrect: false, - controller: _latitudeController, - style: Theme.of(context).textTheme.bodyMedium, - decoration: const InputDecoration(hintText: 'Latitude'), - keyboardType: TextInputType.number, - ), - ), - const SizedBox(width: 20), - Expanded( - child: TextField( - autocorrect: false, - controller: _longitudeController, - style: Theme.of(context).textTheme.bodyMedium, - decoration: const InputDecoration(hintText: 'Longitude'), - keyboardType: TextInputType.number, - ), - ), - ], - ), - const Padding(padding: EdgeInsets.only(top: 8)), - Center( - child: ElevatedButton( - child: const Text('Look up address'), - onPressed: () { - final latitude = double.parse(_latitudeController.text); - final longitude = double.parse(_longitudeController.text); - - _geocoding - .placemarkFromCoordinates( - latitude, - longitude, - locale: _locale, - ) - .then((placemarks) { - var output = 'No results found.'; - if (placemarks.isNotEmpty) { - output = placemarks[0].toDisplayString(); - } - - setState(() { - _output = output; - }); - }); - }, - ), - ), - const Padding(padding: EdgeInsets.only(top: 32)), - TextField( - autocorrect: false, - controller: _addressController, - style: Theme.of(context).textTheme.bodyMedium, - decoration: const InputDecoration(hintText: 'Address'), - keyboardType: TextInputType.text, - ), - const Padding(padding: EdgeInsets.only(top: 8)), - Center( - child: ElevatedButton( - child: const Text('Look up location'), - onPressed: () { - _geocoding.locationFromAddress(_addressController.text).then(( - locations, - ) { - var output = 'No results found.'; - if (locations.isNotEmpty) { - output = locations[0].toDisplayString(); - } - - setState(() { - _output = output; - }); - }); - }, - ), - ), - const Padding(padding: EdgeInsets.only(top: 8)), - Center( - child: ElevatedButton( - child: const Text('Is present'), - onPressed: () { - _geocoding.isPresent().then((isPresent) { - var output = isPresent - ? "Geocoder is present" - : "Geocoder is not present"; - setState(() { - _output = output; - }); - }); - }, - ), - ), - const Padding(padding: EdgeInsets.only(top: 8)), - Center( - child: ElevatedButton( - child: const Text('Set locale en_US'), - onPressed: () { - setState(() => _locale = Locale('en_US')); - }, - ), - ), - const Padding(padding: EdgeInsets.only(top: 8)), - Center( - child: ElevatedButton( - child: const Text('Set locale nl_NL'), - onPressed: () { - setState(() => _locale = Locale('nl_NL')); - }, - ), - ), - const Padding(padding: EdgeInsets.only(top: 8)), - Expanded( - child: SingleChildScrollView( - child: SizedBox( - width: MediaQuery.of(context).size.width, - child: Text(_output), - ), - ), - ), - ], - ), - ); - } -} - -extension _PlacemarkExtensions on Placemark { - String toDisplayString() { - return ''' - Name: $name, - Street: $street, - ISO Country Code: $isoCountryCode, - Country: $country, - Postal code: $postalCode, - Administrative area: $administrativeArea, - Subadministrative area: $subAdministrativeArea, - Locality: $locality, - Sublocality: $subLocality, - Thoroughfare: $thoroughfare, - Subthoroughfare: $subThoroughfare'''; - } -} - -extension _LocationExtensions on Location { - String toDisplayString() { - return ''' - Latitude: $latitude, - Longitude: $longitude, - Timestamp: $timestamp'''; - } -} diff --git a/geocoding_darwin/example/lib/template/globals.dart b/geocoding_darwin/example/lib/template/globals.dart deleted file mode 100644 index 79b2866..0000000 --- a/geocoding_darwin/example/lib/template/globals.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'dart:core'; - -import 'package:flutter/material.dart'; - -import '../plugin_example/geocode_page.dart'; -import 'info_page.dart'; - -/// The name of the plugin, which will be displayed throughout the example App. -const String pluginName = 'Geocoding'; - -/// Returns Github URL, which is shown in the [InfoPage]. -const String githubURL = 'https://github.com/Baseflow/flutter-geocoding'; - -/// Returns Baseflow URL, which is shown in the [InfoPage]. -const String baseflowURL = 'https://baseflow.com'; - -/// Returns pub.dev URL, which is shown in the [InfoPage]. -const String pubDevURL = 'https://pub.dev/packages/geocoding'; - -/// [EdgeInsets] to define horizontal padding throughout the application. -const EdgeInsets defaultHorizontalPadding = - EdgeInsets.symmetric(horizontal: 24); - -/// [EdgeInsets] to define vertical padding throughout the application. -const EdgeInsets defaultVerticalPadding = EdgeInsets.symmetric(vertical: 24); - -/// Returns a [List] with [IconData] to show in the [AppHome] [AppBar]. -final List icons = [ - Icons.location_on, - Icons.info_outline, -]; - -/// Returns a [List] with [Widget]s to construct pages in the [AppBar]. -final List pages = [ - const GeocodeWidget(), - const InfoPage(), -]; diff --git a/geocoding_darwin/example/lib/template/info_page.dart b/geocoding_darwin/example/lib/template/info_page.dart deleted file mode 100644 index e664649..0000000 --- a/geocoding_darwin/example/lib/template/info_page.dart +++ /dev/null @@ -1,101 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:url_launcher/url_launcher.dart'; - -import 'globals.dart'; - -/// [StatelessWidget] displaying information about Baseflow -class InfoPage extends StatelessWidget { - /// Constructs the [InfoPage] class - const InfoPage({super.key}); - - @override - Widget build(BuildContext context) { - return SizedBox.expand( - child: Align( - alignment: Alignment.bottomCenter, - child: SingleChildScrollView( - child: Padding( - padding: defaultHorizontalPadding + defaultVerticalPadding, - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Align( - alignment: Alignment.centerLeft, - child: Image.asset( - 'res/images/poweredByBaseflowLogoLight@3x.png', - width: 250, - alignment: Alignment.centerLeft, - ), - ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 24), - ), - Text( - 'This app showcases the possibilities of the $pluginName ' - 'plugin, powered by Baseflow. ' - 'This plugin is available as open source project on Github. ' - '\n\n' - 'Need help with integrating functionalities within your own ' - 'apps? Contact us at hello@baseflow.com', - style: Theme.of(context).textTheme.bodyLarge, - ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 8), - ), - _launcherRaisedButton( - 'Find us on Github', - githubURL, - context, - ), - _launcherRaisedButton( - 'Find us on pub.dev', - pubDevURL, - context, - ), - _launcherRaisedButton( - 'Visit baseflow.com', - baseflowURL, - context, - ), - const Padding( - padding: EdgeInsets.only(bottom: 30), - ), - ], - ), - ), - ), - ), - ); - } - - Widget _launcherRaisedButton(String text, String url, BuildContext context) { - final uri = Uri.parse(url); - return Container( - width: MediaQuery.of(context).size.width, - height: 50, - margin: const EdgeInsets.only(top: 24.0), - alignment: Alignment.center, - child: SizedBox.expand( - child: ElevatedButton( - style: ElevatedButton.styleFrom( - padding: const EdgeInsets.all(8), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(30.0), - ), - ), - child: Text(text), - onPressed: () => _launchURL(uri), - ), - ), - ); - } - - Future _launchURL(Uri uri) async { - if (await canLaunchUrl(uri)) { - await launchUrl(uri); - } else { - throw 'Could not launch ${uri.path}'; - } - } -} diff --git a/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig b/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig index 4b81f9b..c2efd0b 100644 --- a/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/geocoding_darwin/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig b/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig index 5caa9d1..c2efd0b 100644 --- a/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig +++ b/geocoding_darwin/example/macos/Flutter/Flutter-Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/geocoding_darwin/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/geocoding_darwin/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig index 419a43f..125f74e 100644 --- a/geocoding_darwin/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig +++ b/geocoding_darwin/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig @@ -2,10 +2,12 @@ FLUTTER_ROOT=/Users/maurits/development/flutter FLUTTER_APPLICATION_PATH=/Users/maurits/sources/Baseflow/Internal/Flutter/geocoding/geocoding_darwin/example COCOAPODS_PARALLEL_CODE_SIGN=true +FLUTTER_TARGET=/Users/maurits/sources/Baseflow/Internal/Flutter/geocoding/geocoding_darwin/example/lib/main.dart FLUTTER_BUILD_DIR=build FLUTTER_BUILD_NAME=1.0.0 FLUTTER_BUILD_NUMBER=1 +DART_DEFINES=RkxVVFRFUl9WRVJTSU9OPTMuMzIuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049ZmNmMmMxMTU3Mg==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049ZGQ5M2RlNmZiMQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My44LjE= DART_OBFUSCATION=false TRACK_WIDGET_CREATION=true TREE_SHAKE_ICONS=false -PACKAGE_CONFIG=.dart_tool/package_config.json +PACKAGE_CONFIG=/Users/maurits/sources/Baseflow/Internal/Flutter/geocoding/geocoding_darwin/example/.dart_tool/package_config.json diff --git a/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift b/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift index 7f421ef..5359eb8 100644 --- a/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift +++ b/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift @@ -9,7 +9,7 @@ import PackageDescription let package = Package( name: "FlutterGeneratedPluginSwiftPackage", platforms: [ - .macOS("10.14") + .macOS("10.15") ], products: [ .library(name: "FlutterGeneratedPluginSwiftPackage", type: .static, targets: ["FlutterGeneratedPluginSwiftPackage"]) diff --git a/geocoding_darwin/example/macos/Podfile b/geocoding_darwin/example/macos/Podfile deleted file mode 100644 index ff5ddb3..0000000 --- a/geocoding_darwin/example/macos/Podfile +++ /dev/null @@ -1,42 +0,0 @@ -platform :osx, '10.15' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/geocoding_darwin/example/macos/Pods/Local Podspecs/FlutterMacOS.podspec.json b/geocoding_darwin/example/macos/Pods/Local Podspecs/FlutterMacOS.podspec.json deleted file mode 100644 index 7e9c0ae..0000000 --- a/geocoding_darwin/example/macos/Pods/Local Podspecs/FlutterMacOS.podspec.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "FlutterMacOS", - "version": "1.0.0", - "summary": "A UI toolkit for beautiful and fast apps.", - "homepage": "https://flutter.dev", - "license": { - "type": "BSD" - }, - "authors": { - "Flutter Dev Team": "flutter-dev@googlegroups.com" - }, - "source": { - "git": "https://github.com/flutter/engine", - "tag": "1.0.0" - }, - "platforms": { - "osx": "10.14" - }, - "vendored_frameworks": "path/to/nothing" -} diff --git a/geocoding_darwin/example/macos/Pods/Local Podspecs/geocoding_darwin.podspec.json b/geocoding_darwin/example/macos/Pods/Local Podspecs/geocoding_darwin.podspec.json deleted file mode 100644 index 96ab233..0000000 --- a/geocoding_darwin/example/macos/Pods/Local Podspecs/geocoding_darwin.podspec.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "geocoding_darwin", - "version": "0.0.1", - "summary": "Flutter Geocoding.", - "description": "A Flutter plugin to convert an address into geocoordinates (geocoding) and reverse.\nDownloaded by pub (not CocoaPods).", - "homepage": "http://github.com/baseflow/flutter-geocoding", - "license": { - "file": "../LICENSE" - }, - "authors": { - "Baseflow": "hello@baseflow.com" - }, - "source": { - "http": "https://github.com/baseflow/flutter-geocoding/tree/main/geocoding_darwin" - }, - "source_files": "geocoding_darwin/Sources/geocoding_darwin/**/*.swift", - "ios": { - "dependencies": { - "Flutter": [] - } - }, - "osx": { - "dependencies": { - "FlutterMacOS": [] - } - }, - "platforms": { - "ios": "12.0", - "osx": "10.15" - }, - "pod_target_xcconfig": { - "DEFINES_MODULE": "YES", - "EXCLUDED_ARCHS[sdk=iphonesimulator*]": "i386" - }, - "xcconfig": { - "LIBRARY_SEARCH_PATHS": "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift", - "LD_RUNPATH_SEARCH_PATHS": "/usr/lib/swift" - }, - "swift_versions": "5.0", - "resource_bundles": { - "geocoding_darwin_privacy": [ - "geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy" - ] - }, - "swift_version": "5.0" -} diff --git a/geocoding_darwin/example/macos/Pods/Local Podspecs/url_launcher_macos.podspec.json b/geocoding_darwin/example/macos/Pods/Local Podspecs/url_launcher_macos.podspec.json deleted file mode 100644 index 253dcf2..0000000 --- a/geocoding_darwin/example/macos/Pods/Local Podspecs/url_launcher_macos.podspec.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "url_launcher_macos", - "version": "0.0.1", - "summary": "Flutter macos plugin for launching a URL.", - "description": "A macOS implementation of the url_launcher plugin.", - "homepage": "https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_macos", - "license": { - "type": "BSD", - "file": "../LICENSE" - }, - "authors": { - "Flutter Team": "flutter-dev@googlegroups.com" - }, - "source": { - "http": "https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_macos" - }, - "source_files": "url_launcher_macos/Sources/url_launcher_macos/**/*.swift", - "resource_bundles": { - "url_launcher_macos_privacy": [ - "url_launcher_macos/Sources/url_launcher_macos/Resources/PrivacyInfo.xcprivacy" - ] - }, - "dependencies": { - "FlutterMacOS": [] - }, - "platforms": { - "osx": "10.14" - }, - "pod_target_xcconfig": { - "DEFINES_MODULE": "YES" - }, - "swift_versions": "5.0", - "swift_version": "5.0" -} diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/project.pbxproj b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index 1c57789..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,2309 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXAggregateTarget section */ - CA272E8348BAB4CE0B0C804FB7B818C4 /* FlutterMacOS */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 624022EE1C2EAB1C3CC38699E1368C5F /* Build configuration list for PBXAggregateTarget "FlutterMacOS" */; - buildPhases = ( - ); - dependencies = ( - ); - name = FlutterMacOS; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 03FF65672874530A3E9AE6BAB1764A4A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE00D34B275026D4656C738BED5A001 /* Cocoa.framework */; }; - 095F7C9901A6838C745E4DF7925F0F5A /* CLLocationCoordinate2DProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C5E0F874B8132C0AF01F20A50B84E /* CLLocationCoordinate2DProxyApiDelegate.swift */; }; - 0D476B81483EC90FC9E8DE5209D22AA3 /* messages.g.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53CFD6992476496154D225587959BC0F /* messages.g.swift */; }; - 0EFB405150F9F2865C4555DF395C7182 /* Pods-Runner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E794494AB90477BA94C681E994ADF341 /* Pods-Runner-dummy.m */; }; - 1EBCE5591489EF6DAD7D59A94E49079C /* NSObjectProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15E946AA29BAE6D8401B09B1EE807356 /* NSObjectProxyApiDelegate.swift */; }; - 2FA6BAD23885E4439E663A37A5898244 /* geocoding_darwin-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B16837BC52BD69BF3A17A3DE214BA534 /* geocoding_darwin-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4589AAB6DC0D5EC8A9EA40B6B49902A2 /* CLGeocoderProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38EBB97AAB79D7896F589237563A863 /* CLGeocoderProxyApiDelegate.swift */; }; - 5C7F9EAFDB90060C821153417349B450 /* CNPostalAddressProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E6D05C5A2DDDD26608D19E262D8B8A /* CNPostalAddressProxyApiDelegate.swift */; }; - 62B18FC2F6A040D1F9396AEAFDBC0CDC /* geocoding_darwin-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5759C423CB3CEB5F828516C6CB6794 /* geocoding_darwin-dummy.m */; }; - 682F4861647FA61FB08CD684DE9788DD /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 2933666BC6FDEE2A987943364994FAA0 /* PrivacyInfo.xcprivacy */; }; - 6BF8B124D89139C22CE0ED92FCD22A7F /* CLLocationProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A66A97598EA245DB1532F4D3A1F00F9 /* CLLocationProxyApiDelegate.swift */; }; - 7090D389867C8720355B275C48F0E4FC /* LocaleProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26D2461BEBF1FC71697BD5A775B65A12 /* LocaleProxyApiDelegate.swift */; }; - 7D00F4C3985A38E0E3CE1FC4734B36C4 /* geocoding_darwin-geocoding_darwin_privacy in Resources */ = {isa = PBXBuildFile; fileRef = 773BB3F48EBAD4DC2DB0D056B5B15FC7 /* geocoding_darwin-geocoding_darwin_privacy */; }; - 8677B0AEA4C26B53EC584C2203C07319 /* GeocodingDarwinPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EDCBAAD01E092FDEBB62660BB941000 /* GeocodingDarwinPlugin.swift */; }; - 8A227308B98ADBD034FB6A15FE92707B /* CLLocationSourceInformationProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8946116902E9E5934A29D0385447936 /* CLLocationSourceInformationProxyApiDelegate.swift */; }; - AB3CBAF0C34944A0C73FEF82CD2AE42D /* url_launcher_macos-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C8884B3FA5A1794028A7F7D1B4C723A /* url_launcher_macos-dummy.m */; }; - B375EA128E6579366091BAA390BBDD34 /* Pods-RunnerTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D3DB54C128E3D88C0C9C7DDEA475ED7 /* Pods-RunnerTests-dummy.m */; }; - BB25AC6305C51351CA44B80314E15A08 /* CLPlacemarkProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D6CE57908ADB8E108FB86F459D589E7 /* CLPlacemarkProxyApiDelegate.swift */; }; - BB54D69A6341C1EC8F55F9EF858DF1E8 /* CLGeocoderLibrary.g.swift in Sources */ = {isa = PBXBuildFile; fileRef = 155AB05CDEDF87A6B573D51B8AA8EFBF /* CLGeocoderLibrary.g.swift */; }; - BCF54605CC227A3EDE2F1953B154E0C6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE00D34B275026D4656C738BED5A001 /* Cocoa.framework */; }; - C159D4A74274CEEDB2E8C74E9FD29910 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE00D34B275026D4656C738BED5A001 /* Cocoa.framework */; }; - C261667EACA671BEAF2922BF7F3D055E /* CLFloorProxyApiDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 551BF44311DA9AB81D823D82E6183769 /* CLFloorProxyApiDelegate.swift */; }; - C65AC7C1D279FC94F060ACC6305B7B30 /* UrlLauncherPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F03951397C926D8D1AF855F672DB46 /* UrlLauncherPlugin.swift */; }; - CE8B3A192CB093F6FACB51CC426795E1 /* url_launcher_macos-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 799DCBE1C68E7072A408C68F158627C5 /* url_launcher_macos-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF4D5B0DCB2388216F7EDF7AB24DD9DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE00D34B275026D4656C738BED5A001 /* Cocoa.framework */; }; - D09323093D9CD260C4FCFC0617B09534 /* StructWrappers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEC565D1F85B0E7E45C05FB423ECCDC /* StructWrappers.swift */; }; - D39918B7FC72A72510B34D14E50ABE6A /* ProxyApiRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7849D33367C7DC4617E4CC20CD5E715 /* ProxyApiRegistrar.swift */; }; - E9F14B48B4D1EDF3C12DA322312C7DD0 /* url_launcher_macos-url_launcher_macos_privacy in Resources */ = {isa = PBXBuildFile; fileRef = 1C017A23A0627698026BC47D53596E76 /* url_launcher_macos-url_launcher_macos_privacy */; }; - EB2DC96CDCF638AB89007D2DB0F3119A /* Pods-RunnerTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E9B12BCE5540D02A80250C3EC16D399 /* Pods-RunnerTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F02D569924A7312ACAEB3B66B837EE65 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 640D3F45DD60E2FE36264D9C17AB44D4 /* PrivacyInfo.xcprivacy */; }; - F130ADE9AECDF886C2F6D37BCADB5AA3 /* Pods-Runner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 499E3722E8DACDC2AAA6C15AD1796520 /* Pods-Runner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 446B514A88FADAEB68B66DD3B79D750C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = CA272E8348BAB4CE0B0C804FB7B818C4; - remoteInfo = FlutterMacOS; - }; - 5BA05EE69CE7601D0858876E3F19F4BE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = CA272E8348BAB4CE0B0C804FB7B818C4; - remoteInfo = FlutterMacOS; - }; - 68D75B52376F9B2EE56CD3EFE9C610BF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = CD7AE32C2F3A14031FB4B912CABCC791; - remoteInfo = "url_launcher_macos-url_launcher_macos_privacy"; - }; - 8AF2D52036BBD51A7FB6CD41009713C9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8B74B458B450D74B75744B87BD747314; - remoteInfo = "Pods-Runner"; - }; - 9C6BBAA2BBB92A642D8D5B0BD7223791 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 21B495F40BC6839AED63A77677F8DD42; - remoteInfo = "geocoding_darwin-geocoding_darwin_privacy"; - }; - A700F678F0FDCECBBD59D74613AA7839 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 18785DB831C0FA5904C6F1414D53CB5B; - remoteInfo = url_launcher_macos; - }; - AFE579245895A7FEA9E396852ACD608C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 041709380401F170CB24C6ABF2AA6F95; - remoteInfo = geocoding_darwin; - }; - D706C894401B3917C2185B783AB716DC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = CA272E8348BAB4CE0B0C804FB7B818C4; - remoteInfo = FlutterMacOS; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 03E8AD2E8B75443E12D3D3BD12A9900E /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 0AFB643DA4919253F749E2836A5AAFDC /* Pods-Runner-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Runner-Info.plist"; sourceTree = ""; }; - 11AA7018F95317D959D9D2E76CBB2377 /* Pods-RunnerTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RunnerTests-acknowledgements.markdown"; sourceTree = ""; }; - 13E6D05C5A2DDDD26608D19E262D8B8A /* CNPostalAddressProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CNPostalAddressProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CNPostalAddressProxyApiDelegate.swift; sourceTree = ""; }; - 155AB05CDEDF87A6B573D51B8AA8EFBF /* CLGeocoderLibrary.g.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLGeocoderLibrary.g.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderLibrary.g.swift; sourceTree = ""; }; - 15E946AA29BAE6D8401B09B1EE807356 /* NSObjectProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSObjectProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/NSObjectProxyApiDelegate.swift; sourceTree = ""; }; - 19ACAFE0FB711947E6D7EA1A0138B052 /* geocoding_darwin.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = geocoding_darwin.modulemap; sourceTree = ""; }; - 1A66A97598EA245DB1532F4D3A1F00F9 /* CLLocationProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLLocationProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationProxyApiDelegate.swift; sourceTree = ""; }; - 1B136F41D5B5FAE96EA576E768A5771D /* Pods-Runner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Runner-acknowledgements.plist"; sourceTree = ""; }; - 1C017A23A0627698026BC47D53596E76 /* url_launcher_macos-url_launcher_macos_privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "url_launcher_macos-url_launcher_macos_privacy"; path = url_launcher_macos_privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 1C7DBB879059596A1DE89F18B85392D4 /* geocoding_darwin-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "geocoding_darwin-Info.plist"; sourceTree = ""; }; - 1DEC565D1F85B0E7E45C05FB423ECCDC /* StructWrappers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StructWrappers.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/StructWrappers.swift; sourceTree = ""; }; - 22DF090618411C2A8AE1DB1DF6CA5F6E /* url_launcher_macos.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = url_launcher_macos.podspec; path = "../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/macos/url_launcher_macos.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 26D2461BEBF1FC71697BD5A775B65A12 /* LocaleProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LocaleProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/LocaleProxyApiDelegate.swift; sourceTree = ""; }; - 2782D8881DA2A7833FC6C99D4499424D /* url_launcher_macos.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = url_launcher_macos.modulemap; sourceTree = ""; }; - 2933666BC6FDEE2A987943364994FAA0 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = "../../../../../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/macos/url_launcher_macos/Sources/url_launcher_macos/Resources/PrivacyInfo.xcprivacy"; sourceTree = ""; }; - 3286FCD502AC5EF7D70294F85382020D /* FlutterMacOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FlutterMacOS.release.xcconfig; sourceTree = ""; }; - 3CE0D7E7EED92B6B056FA34311BF98D2 /* FlutterMacOS.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = FlutterMacOS.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 3EDCBAAD01E092FDEBB62660BB941000 /* GeocodingDarwinPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GeocodingDarwinPlugin.swift; path = ../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/GeocodingDarwinPlugin.swift; sourceTree = ""; }; - 499E3722E8DACDC2AAA6C15AD1796520 /* Pods-Runner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Runner-umbrella.h"; sourceTree = ""; }; - 4B45BE6CD7260048939E186553261531 /* geocoding_darwin-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "geocoding_darwin-prefix.pch"; sourceTree = ""; }; - 4D3DB54C128E3D88C0C9C7DDEA475ED7 /* Pods-RunnerTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RunnerTests-dummy.m"; sourceTree = ""; }; - 4FD66118D2EEC962532D1868A73ADE23 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = "../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/LICENSE"; sourceTree = ""; }; - 53CFD6992476496154D225587959BC0F /* messages.g.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = messages.g.swift; path = "../../../../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/macos/url_launcher_macos/Sources/url_launcher_macos/messages.g.swift"; sourceTree = ""; }; - 551BF44311DA9AB81D823D82E6183769 /* CLFloorProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLFloorProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLFloorProxyApiDelegate.swift; sourceTree = ""; }; - 640D3F45DD60E2FE36264D9C17AB44D4 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Runner"; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B8003E0A47993199F4B4587155DA7EC /* geocoding_darwin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = geocoding_darwin.release.xcconfig; sourceTree = ""; }; - 6C3345B1B3CAEDF5B03B1F731FDC492E /* Pods-RunnerTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-RunnerTests"; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6DCF8974CC24D8F5D5DF38BC74704C60 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../../../../../../../../LICENSE; sourceTree = ""; }; - 728A5ED1DD60BAC8C8F382A87B976F84 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 74F87FF9A7FF0B11663318DA51C97B54 /* geocoding_darwin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = geocoding_darwin.debug.xcconfig; sourceTree = ""; }; - 759C5E0F874B8132C0AF01F20A50B84E /* CLLocationCoordinate2DProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLLocationCoordinate2DProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationCoordinate2DProxyApiDelegate.swift; sourceTree = ""; }; - 773BB3F48EBAD4DC2DB0D056B5B15FC7 /* geocoding_darwin-geocoding_darwin_privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "geocoding_darwin-geocoding_darwin_privacy"; path = geocoding_darwin_privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 773BFCE41424EB8EBB72EF3F6A5FB719 /* Pods-Runner-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Runner-frameworks.sh"; sourceTree = ""; }; - 799DCBE1C68E7072A408C68F158627C5 /* url_launcher_macos-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "url_launcher_macos-umbrella.h"; sourceTree = ""; }; - 79F83F4D505FA40C1CD18A8029181D59 /* Pods-RunnerTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RunnerTests-acknowledgements.plist"; sourceTree = ""; }; - 7C8884B3FA5A1794028A7F7D1B4C723A /* url_launcher_macos-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "url_launcher_macos-dummy.m"; sourceTree = ""; }; - 7D6CE57908ADB8E108FB86F459D589E7 /* CLPlacemarkProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLPlacemarkProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLPlacemarkProxyApiDelegate.swift; sourceTree = ""; }; - 7E5269FD7D95ACE61E872A4706410BE5 /* geocoding_darwin.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = geocoding_darwin.podspec; path = ../../../../../../../../darwin/geocoding_darwin.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 8C5759C423CB3CEB5F828516C6CB6794 /* geocoding_darwin-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "geocoding_darwin-dummy.m"; sourceTree = ""; }; - 97F03951397C926D8D1AF855F672DB46 /* UrlLauncherPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UrlLauncherPlugin.swift; path = "../../../../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/macos/url_launcher_macos/Sources/url_launcher_macos/UrlLauncherPlugin.swift"; sourceTree = ""; }; - 9B10EFEC4825FC47757F55718F1425F6 /* url_launcher_macos.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = url_launcher_macos.release.xcconfig; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9E9B12BCE5540D02A80250C3EC16D399 /* Pods-RunnerTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RunnerTests-umbrella.h"; sourceTree = ""; }; - 9EE00D34B275026D4656C738BED5A001 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; - A38EBB97AAB79D7896F589237563A863 /* CLGeocoderProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLGeocoderProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLGeocoderProxyApiDelegate.swift; sourceTree = ""; }; - AC8FE152530FBDCE460186B326C1A8FB /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - B00A5ECAED4CA0C16FF7C65365BC0334 /* Pods-RunnerTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RunnerTests-Info.plist"; sourceTree = ""; }; - B0BD57AB3672E53828D11C2A3368023A /* Pods-RunnerTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RunnerTests.modulemap"; sourceTree = ""; }; - B16837BC52BD69BF3A17A3DE214BA534 /* geocoding_darwin-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "geocoding_darwin-umbrella.h"; sourceTree = ""; }; - B1AEEF86AC83B16D42E9C5ABE1397477 /* ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist"; sourceTree = ""; }; - B703785507B22BAF0B800737429577EC /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.release.xcconfig"; sourceTree = ""; }; - C0C9A074EEF12F27AC2F536567F9FAE1 /* url_launcher_macos */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = url_launcher_macos; path = url_launcher_macos.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C24C1A035F22D24883C6F1876F274C6F /* Pods-Runner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Runner.modulemap"; sourceTree = ""; }; - C50FD10CD19FF6999637BA5ECAF1681B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C7507681ACE20E3B7FEC49A0AA8C2DB4 /* url_launcher_macos.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = url_launcher_macos.debug.xcconfig; sourceTree = ""; }; - CE6A710DF7D1B84E3EC9CF3C75960D6F /* url_launcher_macos-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "url_launcher_macos-Info.plist"; sourceTree = ""; }; - D8946116902E9E5934A29D0385447936 /* CLLocationSourceInformationProxyApiDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CLLocationSourceInformationProxyApiDelegate.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/CLLocationSourceInformationProxyApiDelegate.swift; sourceTree = ""; }; - D8A7DA456C014100EF89AC4B0129C57D /* geocoding_darwin */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = geocoding_darwin; path = geocoding_darwin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E0B111549F8604073F021997993C079C /* ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist"; sourceTree = ""; }; - E556A8185F03C5CA02B03576BC75EB1C /* url_launcher_macos-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "url_launcher_macos-prefix.pch"; sourceTree = ""; }; - E736E0C9C5B73D27B8865E363E2108AC /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - E794494AB90477BA94C681E994ADF341 /* Pods-Runner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Runner-dummy.m"; sourceTree = ""; }; - ECDF6AA713870989438BA93B395DC557 /* Pods-Runner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Runner-acknowledgements.markdown"; sourceTree = ""; }; - F7849D33367C7DC4617E4CC20CD5E715 /* ProxyApiRegistrar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProxyApiRegistrar.swift; path = ../../../../../../../../../../../../darwin/geocoding_darwin/Sources/geocoding_darwin/CLGeocoder/ProxyApiRegistrar.swift; sourceTree = ""; }; - FE4877F8C64A6FB73F1233520E577E74 /* FlutterMacOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FlutterMacOS.debug.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 5225B45F604A684FC71548C5818501A8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C159D4A74274CEEDB2E8C74E9FD29910 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 73FE10251AE863A3A09AFB37BE1CF12D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 754F817C794A6A9617C915BFC19B082B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 82602350B07A35D5E815A8A065D8618E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CF4D5B0DCB2388216F7EDF7AB24DD9DA /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EAC0834F7252D8143E0E41335E53F3B8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 03FF65672874530A3E9AE6BAB1764A4A /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EB4636B20D0358DA3F52CF34798AC0A3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - BCF54605CC227A3EDE2F1953B154E0C6 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 019A403EFEE46148130EDBA4249ED1E6 /* sources */ = { - isa = PBXGroup; - children = ( - 26BE66D4E2DE1AB59D4428699275D340 /* Baseflow */, - ); - name = sources; - path = sources; - sourceTree = ""; - }; - 02B30BC65737530B2F5D41D942356157 /* Flutter */ = { - isa = PBXGroup; - children = ( - 2A4EA9F96816C4B9B0EABDB10DBDE613 /* ephemeral */, - ); - name = Flutter; - path = Flutter; - sourceTree = ""; - }; - 0FB6DE325ED888BE061D6B6C1DD50F4C /* .symlinks */ = { - isa = PBXGroup; - children = ( - 1C0B359E83DD44FB0D7E9705160604FD /* plugins */, - ); - name = .symlinks; - path = .symlinks; - sourceTree = ""; - }; - 0FF617DFB4ADC0C9D5B189F95D7FFF2B /* Sources */ = { - isa = PBXGroup; - children = ( - EF7EE6A67F0E21562D5CF09FD5866F4C /* geocoding_darwin */, - ); - name = Sources; - path = Sources; - sourceTree = ""; - }; - 109E4082BF1E32FAB1C8039377546C2C /* geocoding_darwin */ = { - isa = PBXGroup; - children = ( - 6C7A2CAF1F27D61313599E28F50BA424 /* example */, - ); - name = geocoding_darwin; - path = geocoding_darwin; - sourceTree = ""; - }; - 10D6DE92A12FC289B2A775E8C875DB30 /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - BA8478F6252EE48AB8BF67DB098D3C94 /* Sources */, - ); - name = url_launcher_macos; - path = url_launcher_macos; - sourceTree = ""; - }; - 1606912FF35F078481627DBC6262C49E /* plugins */ = { - isa = PBXGroup; - children = ( - A5D3EC28FFD312A51AFF2E817A3E0E6C /* url_launcher_macos */, - ); - name = plugins; - path = plugins; - sourceTree = ""; - }; - 19ECCB0CF1BA1D1FF38C0698DC0673AF /* Internal */ = { - isa = PBXGroup; - children = ( - EF1492C79A791E3C10F5A06B8025152A /* Flutter */, - ); - name = Internal; - path = Internal; - sourceTree = ""; - }; - 1C0B359E83DD44FB0D7E9705160604FD /* plugins */ = { - isa = PBXGroup; - children = ( - BEEA4534E6141577BF7C5C7E75B8AB8C /* geocoding_darwin */, - ); - name = plugins; - path = plugins; - sourceTree = ""; - }; - 1D762729D25761ED9F2C6B11E731921B /* .. */ = { - isa = PBXGroup; - children = ( - B5E3291ECBE9200971638FE42F4C160A /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 20CC7D2A27DDB0133EEDDDAA4921AC17 /* Baseflow */ = { - isa = PBXGroup; - children = ( - 6AF869BD6939096EAADB62D558696D45 /* Internal */, - ); - name = Baseflow; - path = Baseflow; - sourceTree = ""; - }; - 26BE66D4E2DE1AB59D4428699275D340 /* Baseflow */ = { - isa = PBXGroup; - children = ( - 19ECCB0CF1BA1D1FF38C0698DC0673AF /* Internal */, - ); - name = Baseflow; - path = Baseflow; - sourceTree = ""; - }; - 295B735DDA64075F1BD8F6D6879E7BC8 /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - 53CFD6992476496154D225587959BC0F /* messages.g.swift */, - 97F03951397C926D8D1AF855F672DB46 /* UrlLauncherPlugin.swift */, - ); - name = url_launcher_macos; - path = url_launcher_macos; - sourceTree = ""; - }; - 2A4EA9F96816C4B9B0EABDB10DBDE613 /* ephemeral */ = { - isa = PBXGroup; - children = ( - 0FB6DE325ED888BE061D6B6C1DD50F4C /* .symlinks */, - ); - name = ephemeral; - path = ephemeral; - sourceTree = ""; - }; - 2B4240E5DC0BD3422577BC21DE11695A /* .. */ = { - isa = PBXGroup; - children = ( - 66E6902B7126366468047984245DA9E1 /* .. */, - ); - name = ..; - path = "../../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.2/macos/url_launcher_macos/Sources"; - sourceTree = ""; - }; - 2DB8426A477BA92773F00012EBA84D53 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - E806A4F97D48F5FD3B4CA1BC617EA1F5 /* Pods-Runner */, - 537E840C4F4E30B706FD9D64B15C53A7 /* Pods-RunnerTests */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 31831944CF445C1512E0B80315987A0A /* macos */ = { - isa = PBXGroup; - children = ( - A9CA56C0779419EE64016DE0337D2E48 /* Flutter */, - ); - name = macos; - path = macos; - sourceTree = ""; - }; - 38B681AC879E116B8B8C4CF751C58233 /* Support Files */ = { - isa = PBXGroup; - children = ( - 19ACAFE0FB711947E6D7EA1A0138B052 /* geocoding_darwin.modulemap */, - 8C5759C423CB3CEB5F828516C6CB6794 /* geocoding_darwin-dummy.m */, - 1C7DBB879059596A1DE89F18B85392D4 /* geocoding_darwin-Info.plist */, - 4B45BE6CD7260048939E186553261531 /* geocoding_darwin-prefix.pch */, - B16837BC52BD69BF3A17A3DE214BA534 /* geocoding_darwin-umbrella.h */, - 74F87FF9A7FF0B11663318DA51C97B54 /* geocoding_darwin.debug.xcconfig */, - 6B8003E0A47993199F4B4587155DA7EC /* geocoding_darwin.release.xcconfig */, - B1AEEF86AC83B16D42E9C5ABE1397477 /* ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist */, - ); - name = "Support Files"; - path = "../../../../../../Pods/Target Support Files/geocoding_darwin"; - sourceTree = ""; - }; - 41C5DAB1034E75752830C8ECE344B615 /* sources */ = { - isa = PBXGroup; - children = ( - 20CC7D2A27DDB0133EEDDDAA4921AC17 /* Baseflow */, - ); - name = sources; - path = sources; - sourceTree = ""; - }; - 42B815904FF9BEEDA397E0244E0C6E2B /* geocoding */ = { - isa = PBXGroup; - children = ( - F6A3C08BEECA6E478DA5E9EE79485A86 /* geocoding_darwin */, - ); - name = geocoding; - path = geocoding; - sourceTree = ""; - }; - 4795B0663A0BFD66334E723EBB599BB3 /* .. */ = { - isa = PBXGroup; - children = ( - 6456C2A22AC65E74E6747D06F4453DE3 /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 48ABCE93B92DF9B236D9C02A6A82C4C0 /* Sources */ = { - isa = PBXGroup; - children = ( - 9E67D4538ED003B097D449DBDAB266F9 /* url_launcher_macos */, - ); - name = Sources; - path = Sources; - sourceTree = ""; - }; - 52C740662085D1384F8E4CB178D3FF88 /* .. */ = { - isa = PBXGroup; - children = ( - 4795B0663A0BFD66334E723EBB599BB3 /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 537E840C4F4E30B706FD9D64B15C53A7 /* Pods-RunnerTests */ = { - isa = PBXGroup; - children = ( - B0BD57AB3672E53828D11C2A3368023A /* Pods-RunnerTests.modulemap */, - 11AA7018F95317D959D9D2E76CBB2377 /* Pods-RunnerTests-acknowledgements.markdown */, - 79F83F4D505FA40C1CD18A8029181D59 /* Pods-RunnerTests-acknowledgements.plist */, - 4D3DB54C128E3D88C0C9C7DDEA475ED7 /* Pods-RunnerTests-dummy.m */, - B00A5ECAED4CA0C16FF7C65365BC0334 /* Pods-RunnerTests-Info.plist */, - 9E9B12BCE5540D02A80250C3EC16D399 /* Pods-RunnerTests-umbrella.h */, - 03E8AD2E8B75443E12D3D3BD12A9900E /* Pods-RunnerTests.debug.xcconfig */, - E736E0C9C5B73D27B8865E363E2108AC /* Pods-RunnerTests.profile.xcconfig */, - AC8FE152530FBDCE460186B326C1A8FB /* Pods-RunnerTests.release.xcconfig */, - ); - name = "Pods-RunnerTests"; - path = "Target Support Files/Pods-RunnerTests"; - sourceTree = ""; - }; - 55F702389CEA80581968DBE4EBB5EBCB /* ephemeral */ = { - isa = PBXGroup; - children = ( - B119384DB7E55C23AC8E214F4B05080B /* .symlinks */, - ); - name = ephemeral; - path = ephemeral; - sourceTree = ""; - }; - 57AA2F45492B72399DE7A8E23979D06D /* macos */ = { - isa = PBXGroup; - children = ( - E5F62E9CB56044739BF0FD5D561A5563 /* Flutter */, - ); - name = macos; - path = macos; - sourceTree = ""; - }; - 594489EB895AB59958C3D8CBB47D4DE1 /* .symlinks */ = { - isa = PBXGroup; - children = ( - D55DF77862EFD03A253A3C62A738E461 /* plugins */, - ); - name = .symlinks; - path = .symlinks; - sourceTree = ""; - }; - 6456C2A22AC65E74E6747D06F4453DE3 /* .. */ = { - isa = PBXGroup; - children = ( - B795C67BD9147771FAE6394B3917F8A0 /* example */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 653FCB8F0D5FFC375F37EB5FC5B01AF1 /* Support Files */ = { - isa = PBXGroup; - children = ( - FE4877F8C64A6FB73F1233520E577E74 /* FlutterMacOS.debug.xcconfig */, - 3286FCD502AC5EF7D70294F85382020D /* FlutterMacOS.release.xcconfig */, - ); - name = "Support Files"; - path = "../../Pods/Target Support Files/FlutterMacOS"; - sourceTree = ""; - }; - 66E6902B7126366468047984245DA9E1 /* .. */ = { - isa = PBXGroup; - children = ( - 8568592E6F9CBBEF6AB378DEF0353386 /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 68872F30B54C07092C10E7F79170F772 /* macos */ = { - isa = PBXGroup; - children = ( - 10D6DE92A12FC289B2A775E8C875DB30 /* url_launcher_macos */, - ); - name = macos; - path = macos; - sourceTree = ""; - }; - 68E582F7C0D58A49899C67FBB9A7B6FB /* geocoding */ = { - isa = PBXGroup; - children = ( - 109E4082BF1E32FAB1C8039377546C2C /* geocoding_darwin */, - ); - name = geocoding; - path = geocoding; - sourceTree = ""; - }; - 6AF869BD6939096EAADB62D558696D45 /* Internal */ = { - isa = PBXGroup; - children = ( - 91E9A73B7CE0E1864D5E76E3E24012A9 /* Flutter */, - ); - name = Internal; - path = Internal; - sourceTree = ""; - }; - 6C7A2CAF1F27D61313599E28F50BA424 /* example */ = { - isa = PBXGroup; - children = ( - 31831944CF445C1512E0B80315987A0A /* macos */, - ); - name = example; - path = example; - sourceTree = ""; - }; - 6CF8013CA832F8AB5DDAE0156C97FD88 /* OS X */ = { - isa = PBXGroup; - children = ( - 9EE00D34B275026D4656C738BED5A001 /* Cocoa.framework */, - ); - name = "OS X"; - sourceTree = ""; - }; - 7475902EA0EAC702F9F7B72DC30B2CBE /* .. */ = { - isa = PBXGroup; - children = ( - A34A1B6AE6AA9BF3142BC150F52B6DDC /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 7ABDA0C943E6D0161076F66E07F62F59 /* .. */ = { - isa = PBXGroup; - children = ( - 52C740662085D1384F8E4CB178D3FF88 /* .. */, - ); - name = ..; - path = ../../../../../../../../darwin/geocoding_darwin/Sources; - sourceTree = ""; - }; - 853B65B2645645CCAD467D093F493F40 /* .. */ = { - isa = PBXGroup; - children = ( - 019A403EFEE46148130EDBA4249ED1E6 /* sources */, - ); - name = ..; - path = .; - sourceTree = ""; - }; - 8568592E6F9CBBEF6AB378DEF0353386 /* .. */ = { - isa = PBXGroup; - children = ( - 7475902EA0EAC702F9F7B72DC30B2CBE /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 8FEB3F6219D76DA125D1486C99899AC7 /* .. */ = { - isa = PBXGroup; - children = ( - 1D762729D25761ED9F2C6B11E731921B /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - 91E9A73B7CE0E1864D5E76E3E24012A9 /* Flutter */ = { - isa = PBXGroup; - children = ( - 42B815904FF9BEEDA397E0244E0C6E2B /* geocoding */, - ); - name = Flutter; - path = Flutter; - sourceTree = ""; - }; - 98B742FF86CF498CD127683E6302497C /* FlutterMacOS */ = { - isa = PBXGroup; - children = ( - 9C5D7FB2F930504D93709C63985DFF2E /* Pod */, - 653FCB8F0D5FFC375F37EB5FC5B01AF1 /* Support Files */, - ); - name = FlutterMacOS; - path = ../Flutter/ephemeral; - sourceTree = ""; - }; - 9C5D7FB2F930504D93709C63985DFF2E /* Pod */ = { - isa = PBXGroup; - children = ( - 3CE0D7E7EED92B6B056FA34311BF98D2 /* FlutterMacOS.podspec */, - ); - name = Pod; - sourceTree = ""; - }; - 9D3461B40CD149EE468CDCB6C318D1C8 /* macos */ = { - isa = PBXGroup; - children = ( - FCAC4ABAB03240EA2C9E446B43BAF269 /* url_launcher_macos */, - ); - name = macos; - path = macos; - sourceTree = ""; - }; - 9E67D4538ED003B097D449DBDAB266F9 /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - DF76DDE80C7D3B38C4A0FF947816C217 /* Resources */, - ); - name = url_launcher_macos; - path = url_launcher_macos; - sourceTree = ""; - }; - A34A1B6AE6AA9BF3142BC150F52B6DDC /* .. */ = { - isa = PBXGroup; - children = ( - 8FEB3F6219D76DA125D1486C99899AC7 /* .. */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - A5D3EC28FFD312A51AFF2E817A3E0E6C /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - 9D3461B40CD149EE468CDCB6C318D1C8 /* macos */, - ); - name = url_launcher_macos; - path = url_launcher_macos; - sourceTree = ""; - }; - A7B96D3A2E3FA9DAEF1DC2ED6B0FCCE2 /* example */ = { - isa = PBXGroup; - children = ( - 57AA2F45492B72399DE7A8E23979D06D /* macos */, - ); - name = example; - path = example; - sourceTree = ""; - }; - A7C6E8C8CE452BB08B621E62EDB72D1B /* geocoding_darwin */ = { - isa = PBXGroup; - children = ( - 7ABDA0C943E6D0161076F66E07F62F59 /* .. */, - C736140043E8C25FC41A29BC27ABE5D6 /* Pod */, - 38B681AC879E116B8B8C4CF751C58233 /* Support Files */, - ); - name = geocoding_darwin; - path = ../Flutter/ephemeral/.symlinks/plugins/geocoding_darwin/darwin; - sourceTree = ""; - }; - A9CA56C0779419EE64016DE0337D2E48 /* Flutter */ = { - isa = PBXGroup; - children = ( - 55F702389CEA80581968DBE4EBB5EBCB /* ephemeral */, - ); - name = Flutter; - path = Flutter; - sourceTree = ""; - }; - B006CC91915780E0FCC36149225B6195 /* Pod */ = { - isa = PBXGroup; - children = ( - 4FD66118D2EEC962532D1868A73ADE23 /* LICENSE */, - 22DF090618411C2A8AE1DB1DF6CA5F6E /* url_launcher_macos.podspec */, - ); - name = Pod; - sourceTree = ""; - }; - B119384DB7E55C23AC8E214F4B05080B /* .symlinks */ = { - isa = PBXGroup; - children = ( - 1606912FF35F078481627DBC6262C49E /* plugins */, - ); - name = .symlinks; - path = .symlinks; - sourceTree = ""; - }; - B5E3291ECBE9200971638FE42F4C160A /* .. */ = { - isa = PBXGroup; - children = ( - 853B65B2645645CCAD467D093F493F40 /* .. */, - 41C5DAB1034E75752830C8ECE344B615 /* sources */, - ); - name = ..; - path = ..; - sourceTree = ""; - }; - B795C67BD9147771FAE6394B3917F8A0 /* example */ = { - isa = PBXGroup; - children = ( - E9754E1E950E0627D1958B54F1699BDE /* macos */, - ); - name = example; - path = example; - sourceTree = ""; - }; - BA8478F6252EE48AB8BF67DB098D3C94 /* Sources */ = { - isa = PBXGroup; - children = ( - 295B735DDA64075F1BD8F6D6879E7BC8 /* url_launcher_macos */, - ); - name = Sources; - path = Sources; - sourceTree = ""; - }; - BEEA4534E6141577BF7C5C7E75B8AB8C /* geocoding_darwin */ = { - isa = PBXGroup; - children = ( - DCBCFE9DDED2E515B7913C2CE9F0636C /* darwin */, - ); - name = geocoding_darwin; - path = geocoding_darwin; - sourceTree = ""; - }; - BFD59B83966DD11A11A556B3535F3D8B /* Products */ = { - isa = PBXGroup; - children = ( - D8A7DA456C014100EF89AC4B0129C57D /* geocoding_darwin */, - 773BB3F48EBAD4DC2DB0D056B5B15FC7 /* geocoding_darwin-geocoding_darwin_privacy */, - 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */, - 6C3345B1B3CAEDF5B03B1F731FDC492E /* Pods-RunnerTests */, - C0C9A074EEF12F27AC2F536567F9FAE1 /* url_launcher_macos */, - 1C017A23A0627698026BC47D53596E76 /* url_launcher_macos-url_launcher_macos_privacy */, - ); - name = Products; - sourceTree = ""; - }; - C3E5DC7C67F69DECA0DEA95CA253111A /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - 2B4240E5DC0BD3422577BC21DE11695A /* .. */, - B006CC91915780E0FCC36149225B6195 /* Pod */, - DA6AAC407EEA1DD84BBF0DBCC29CC745 /* Support Files */, - ); - name = url_launcher_macos; - path = ../Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos; - sourceTree = ""; - }; - C736140043E8C25FC41A29BC27ABE5D6 /* Pod */ = { - isa = PBXGroup; - children = ( - 7E5269FD7D95ACE61E872A4706410BE5 /* geocoding_darwin.podspec */, - 6DCF8974CC24D8F5D5DF38BC74704C60 /* LICENSE */, - ); - name = Pod; - sourceTree = ""; - }; - CF1408CF629C7361332E53B88F7BD30C = { - isa = PBXGroup; - children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - F7A6F16A26BDB27C5141066F0F3AC6BC /* Development Pods */, - E0A1E60606E0BF6E2E10F1F01350DFE8 /* Frameworks */, - BFD59B83966DD11A11A556B3535F3D8B /* Products */, - 2DB8426A477BA92773F00012EBA84D53 /* Targets Support Files */, - ); - sourceTree = ""; - }; - D55DF77862EFD03A253A3C62A738E461 /* plugins */ = { - isa = PBXGroup; - children = ( - F621D7A39174E3039E54AB3685353C57 /* url_launcher_macos */, - ); - name = plugins; - path = plugins; - sourceTree = ""; - }; - D69D9CFD22D0C834BA790D92C06CF064 /* CLGeocoder */ = { - isa = PBXGroup; - children = ( - 551BF44311DA9AB81D823D82E6183769 /* CLFloorProxyApiDelegate.swift */, - 155AB05CDEDF87A6B573D51B8AA8EFBF /* CLGeocoderLibrary.g.swift */, - A38EBB97AAB79D7896F589237563A863 /* CLGeocoderProxyApiDelegate.swift */, - 759C5E0F874B8132C0AF01F20A50B84E /* CLLocationCoordinate2DProxyApiDelegate.swift */, - 1A66A97598EA245DB1532F4D3A1F00F9 /* CLLocationProxyApiDelegate.swift */, - D8946116902E9E5934A29D0385447936 /* CLLocationSourceInformationProxyApiDelegate.swift */, - 7D6CE57908ADB8E108FB86F459D589E7 /* CLPlacemarkProxyApiDelegate.swift */, - 13E6D05C5A2DDDD26608D19E262D8B8A /* CNPostalAddressProxyApiDelegate.swift */, - 26D2461BEBF1FC71697BD5A775B65A12 /* LocaleProxyApiDelegate.swift */, - 15E946AA29BAE6D8401B09B1EE807356 /* NSObjectProxyApiDelegate.swift */, - F7849D33367C7DC4617E4CC20CD5E715 /* ProxyApiRegistrar.swift */, - 1DEC565D1F85B0E7E45C05FB423ECCDC /* StructWrappers.swift */, - ); - name = CLGeocoder; - path = CLGeocoder; - sourceTree = ""; - }; - DA6AAC407EEA1DD84BBF0DBCC29CC745 /* Support Files */ = { - isa = PBXGroup; - children = ( - E0B111549F8604073F021997993C079C /* ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist */, - 2782D8881DA2A7833FC6C99D4499424D /* url_launcher_macos.modulemap */, - 7C8884B3FA5A1794028A7F7D1B4C723A /* url_launcher_macos-dummy.m */, - CE6A710DF7D1B84E3EC9CF3C75960D6F /* url_launcher_macos-Info.plist */, - E556A8185F03C5CA02B03576BC75EB1C /* url_launcher_macos-prefix.pch */, - 799DCBE1C68E7072A408C68F158627C5 /* url_launcher_macos-umbrella.h */, - C7507681ACE20E3B7FEC49A0AA8C2DB4 /* url_launcher_macos.debug.xcconfig */, - 9B10EFEC4825FC47757F55718F1425F6 /* url_launcher_macos.release.xcconfig */, - ); - name = "Support Files"; - path = "../../../../../../Pods/Target Support Files/url_launcher_macos"; - sourceTree = ""; - }; - DCBCFE9DDED2E515B7913C2CE9F0636C /* darwin */ = { - isa = PBXGroup; - children = ( - E81CEC63EFDEF2FA5F107D7EE190A9D9 /* geocoding_darwin */, - ); - name = darwin; - path = darwin; - sourceTree = ""; - }; - DF76DDE80C7D3B38C4A0FF947816C217 /* Resources */ = { - isa = PBXGroup; - children = ( - 2933666BC6FDEE2A987943364994FAA0 /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - path = Resources; - sourceTree = ""; - }; - E0A1E60606E0BF6E2E10F1F01350DFE8 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 6CF8013CA832F8AB5DDAE0156C97FD88 /* OS X */, - ); - name = Frameworks; - sourceTree = ""; - }; - E5F62E9CB56044739BF0FD5D561A5563 /* Flutter */ = { - isa = PBXGroup; - children = ( - E761C0DFA1323730B0CBA7D3870AB02C /* ephemeral */, - ); - name = Flutter; - path = Flutter; - sourceTree = ""; - }; - E761C0DFA1323730B0CBA7D3870AB02C /* ephemeral */ = { - isa = PBXGroup; - children = ( - 594489EB895AB59958C3D8CBB47D4DE1 /* .symlinks */, - ); - name = ephemeral; - path = ephemeral; - sourceTree = ""; - }; - E806A4F97D48F5FD3B4CA1BC617EA1F5 /* Pods-Runner */ = { - isa = PBXGroup; - children = ( - C24C1A035F22D24883C6F1876F274C6F /* Pods-Runner.modulemap */, - ECDF6AA713870989438BA93B395DC557 /* Pods-Runner-acknowledgements.markdown */, - 1B136F41D5B5FAE96EA576E768A5771D /* Pods-Runner-acknowledgements.plist */, - E794494AB90477BA94C681E994ADF341 /* Pods-Runner-dummy.m */, - 773BFCE41424EB8EBB72EF3F6A5FB719 /* Pods-Runner-frameworks.sh */, - 0AFB643DA4919253F749E2836A5AAFDC /* Pods-Runner-Info.plist */, - 499E3722E8DACDC2AAA6C15AD1796520 /* Pods-Runner-umbrella.h */, - 728A5ED1DD60BAC8C8F382A87B976F84 /* Pods-Runner.debug.xcconfig */, - C50FD10CD19FF6999637BA5ECAF1681B /* Pods-Runner.profile.xcconfig */, - B703785507B22BAF0B800737429577EC /* Pods-Runner.release.xcconfig */, - ); - name = "Pods-Runner"; - path = "Target Support Files/Pods-Runner"; - sourceTree = ""; - }; - E81CEC63EFDEF2FA5F107D7EE190A9D9 /* geocoding_darwin */ = { - isa = PBXGroup; - children = ( - 0FF617DFB4ADC0C9D5B189F95D7FFF2B /* Sources */, - ); - name = geocoding_darwin; - path = geocoding_darwin; - sourceTree = ""; - }; - E9754E1E950E0627D1958B54F1699BDE /* macos */ = { - isa = PBXGroup; - children = ( - 02B30BC65737530B2F5D41D942356157 /* Flutter */, - ); - name = macos; - path = macos; - sourceTree = ""; - }; - EF1492C79A791E3C10F5A06B8025152A /* Flutter */ = { - isa = PBXGroup; - children = ( - 68E582F7C0D58A49899C67FBB9A7B6FB /* geocoding */, - ); - name = Flutter; - path = Flutter; - sourceTree = ""; - }; - EF7EE6A67F0E21562D5CF09FD5866F4C /* geocoding_darwin */ = { - isa = PBXGroup; - children = ( - 3EDCBAAD01E092FDEBB62660BB941000 /* GeocodingDarwinPlugin.swift */, - 640D3F45DD60E2FE36264D9C17AB44D4 /* PrivacyInfo.xcprivacy */, - D69D9CFD22D0C834BA790D92C06CF064 /* CLGeocoder */, - ); - name = geocoding_darwin; - path = geocoding_darwin; - sourceTree = ""; - }; - F621D7A39174E3039E54AB3685353C57 /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - 68872F30B54C07092C10E7F79170F772 /* macos */, - ); - name = url_launcher_macos; - path = url_launcher_macos; - sourceTree = ""; - }; - F6A3C08BEECA6E478DA5E9EE79485A86 /* geocoding_darwin */ = { - isa = PBXGroup; - children = ( - A7B96D3A2E3FA9DAEF1DC2ED6B0FCCE2 /* example */, - ); - name = geocoding_darwin; - path = geocoding_darwin; - sourceTree = ""; - }; - F7A6F16A26BDB27C5141066F0F3AC6BC /* Development Pods */ = { - isa = PBXGroup; - children = ( - 98B742FF86CF498CD127683E6302497C /* FlutterMacOS */, - A7C6E8C8CE452BB08B621E62EDB72D1B /* geocoding_darwin */, - C3E5DC7C67F69DECA0DEA95CA253111A /* url_launcher_macos */, - ); - name = "Development Pods"; - sourceTree = ""; - }; - FCAC4ABAB03240EA2C9E446B43BAF269 /* url_launcher_macos */ = { - isa = PBXGroup; - children = ( - 48ABCE93B92DF9B236D9C02A6A82C4C0 /* Sources */, - ); - name = url_launcher_macos; - path = url_launcher_macos; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 091DF20B694E8304AA1806638F82E02F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - CE8B3A192CB093F6FACB51CC426795E1 /* url_launcher_macos-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8E4C3A4020EC3FACA49D07B924B7C067 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F130ADE9AECDF886C2F6D37BCADB5AA3 /* Pods-Runner-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DD8C9942EA1F2A00E982FE316428E95A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2FA6BAD23885E4439E663A37A5898244 /* geocoding_darwin-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FC4DA9BD27A4914E75F803590E4C4B8B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - EB2DC96CDCF638AB89007D2DB0F3119A /* Pods-RunnerTests-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 041709380401F170CB24C6ABF2AA6F95 /* geocoding_darwin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 894E59F2224DC04AB8FBC72F67FDC884 /* Build configuration list for PBXNativeTarget "geocoding_darwin" */; - buildPhases = ( - DD8C9942EA1F2A00E982FE316428E95A /* Headers */, - 1BD97503EBB197C69EB5E08761B0689D /* Sources */, - 82602350B07A35D5E815A8A065D8618E /* Frameworks */, - 399144FE18AC6CA6FD8B78FFEFE240CC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 2C3B3CBDDA7ECB03B014CCAFDDE7EEB3 /* PBXTargetDependency */, - 6A476E81BE61151F7E0E8AE84CC4DF59 /* PBXTargetDependency */, - ); - name = geocoding_darwin; - productName = geocoding_darwin; - productReference = D8A7DA456C014100EF89AC4B0129C57D /* geocoding_darwin */; - productType = "com.apple.product-type.framework"; - }; - 18785DB831C0FA5904C6F1414D53CB5B /* url_launcher_macos */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4FF450190D69A230E20E7B300ACDB0E7 /* Build configuration list for PBXNativeTarget "url_launcher_macos" */; - buildPhases = ( - 091DF20B694E8304AA1806638F82E02F /* Headers */, - 2F64E77C103C3280EF51963B8D6A17C2 /* Sources */, - EB4636B20D0358DA3F52CF34798AC0A3 /* Frameworks */, - A168BD838724731476C50E09762A7E6C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B4E6468FA90DB8033CC38FAF30D2C17F /* PBXTargetDependency */, - 8DF959C20A8668E5FD3A5BF30C277200 /* PBXTargetDependency */, - ); - name = url_launcher_macos; - productName = url_launcher_macos; - productReference = C0C9A074EEF12F27AC2F536567F9FAE1 /* url_launcher_macos */; - productType = "com.apple.product-type.framework"; - }; - 21B495F40BC6839AED63A77677F8DD42 /* geocoding_darwin-geocoding_darwin_privacy */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2E483D01CF6895378DC29D21F4F855BE /* Build configuration list for PBXNativeTarget "geocoding_darwin-geocoding_darwin_privacy" */; - buildPhases = ( - D19AD9043B50DA6EB374D24E8A454F93 /* Sources */, - 73FE10251AE863A3A09AFB37BE1CF12D /* Frameworks */, - 9F66A4EC26C70649B1FA0ECCA63A1167 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "geocoding_darwin-geocoding_darwin_privacy"; - productName = geocoding_darwin_privacy; - productReference = 773BB3F48EBAD4DC2DB0D056B5B15FC7 /* geocoding_darwin-geocoding_darwin_privacy */; - productType = "com.apple.product-type.bundle"; - }; - 3232F0C0E7C65B232832393F9ADDD8C3 /* Pods-RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D52099AA1537D0F3745166E1889F6CA3 /* Build configuration list for PBXNativeTarget "Pods-RunnerTests" */; - buildPhases = ( - FC4DA9BD27A4914E75F803590E4C4B8B /* Headers */, - 001CCB0FEA80CD1C6BF534C6D9C6283A /* Sources */, - EAC0834F7252D8143E0E41335E53F3B8 /* Frameworks */, - 4A765108DEAFDEBF078F71CDDBE3414E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0BBC79BFF4DCA13CA3F260CB1F4629AB /* PBXTargetDependency */, - ); - name = "Pods-RunnerTests"; - productName = Pods_RunnerTests; - productReference = 6C3345B1B3CAEDF5B03B1F731FDC492E /* Pods-RunnerTests */; - productType = "com.apple.product-type.framework"; - }; - 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4D05E2F15D12D66695F3DD64906A8953 /* Build configuration list for PBXNativeTarget "Pods-Runner" */; - buildPhases = ( - 8E4C3A4020EC3FACA49D07B924B7C067 /* Headers */, - C377A5C6AD20205FEE45B18E2562DBEC /* Sources */, - 5225B45F604A684FC71548C5818501A8 /* Frameworks */, - E504F24509A5A9518D21A0411B7C82CA /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - AA099357E28985E74AE80A0A48FAC60D /* PBXTargetDependency */, - 3C5BA9131533C8C60B1F74047FE65802 /* PBXTargetDependency */, - 28A5C657486AC0023C6527FBF25A2B6B /* PBXTargetDependency */, - ); - name = "Pods-Runner"; - productName = Pods_Runner; - productReference = 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */; - productType = "com.apple.product-type.framework"; - }; - CD7AE32C2F3A14031FB4B912CABCC791 /* url_launcher_macos-url_launcher_macos_privacy */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4788107DB7F698C0FCD1A840C508A837 /* Build configuration list for PBXNativeTarget "url_launcher_macos-url_launcher_macos_privacy" */; - buildPhases = ( - 552BBF8DD56236D228DA81F73F983389 /* Sources */, - 754F817C794A6A9617C915BFC19B082B /* Frameworks */, - 542C43AEEFA73E565E1B10C5EE657271 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "url_launcher_macos-url_launcher_macos_privacy"; - productName = url_launcher_macos_privacy; - productReference = 1C017A23A0627698026BC47D53596E76 /* url_launcher_macos-url_launcher_macos_privacy */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFDFE7DC352907FC980B868725387E98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1600; - LastUpgradeCheck = 1600; - }; - buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - Base, - en, - ); - mainGroup = CF1408CF629C7361332E53B88F7BD30C; - minimizedProjectReferenceProxies = 0; - preferredProjectObjectVersion = 77; - productRefGroup = BFD59B83966DD11A11A556B3535F3D8B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - CA272E8348BAB4CE0B0C804FB7B818C4 /* FlutterMacOS */, - 041709380401F170CB24C6ABF2AA6F95 /* geocoding_darwin */, - 21B495F40BC6839AED63A77677F8DD42 /* geocoding_darwin-geocoding_darwin_privacy */, - 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */, - 3232F0C0E7C65B232832393F9ADDD8C3 /* Pods-RunnerTests */, - 18785DB831C0FA5904C6F1414D53CB5B /* url_launcher_macos */, - CD7AE32C2F3A14031FB4B912CABCC791 /* url_launcher_macos-url_launcher_macos_privacy */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 399144FE18AC6CA6FD8B78FFEFE240CC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7D00F4C3985A38E0E3CE1FC4734B36C4 /* geocoding_darwin-geocoding_darwin_privacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4A765108DEAFDEBF078F71CDDBE3414E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 542C43AEEFA73E565E1B10C5EE657271 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 682F4861647FA61FB08CD684DE9788DD /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9F66A4EC26C70649B1FA0ECCA63A1167 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F02D569924A7312ACAEB3B66B837EE65 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A168BD838724731476C50E09762A7E6C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E9F14B48B4D1EDF3C12DA322312C7DD0 /* url_launcher_macos-url_launcher_macos_privacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E504F24509A5A9518D21A0411B7C82CA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 001CCB0FEA80CD1C6BF534C6D9C6283A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B375EA128E6579366091BAA390BBDD34 /* Pods-RunnerTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1BD97503EBB197C69EB5E08761B0689D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C261667EACA671BEAF2922BF7F3D055E /* CLFloorProxyApiDelegate.swift in Sources */, - BB54D69A6341C1EC8F55F9EF858DF1E8 /* CLGeocoderLibrary.g.swift in Sources */, - 4589AAB6DC0D5EC8A9EA40B6B49902A2 /* CLGeocoderProxyApiDelegate.swift in Sources */, - 095F7C9901A6838C745E4DF7925F0F5A /* CLLocationCoordinate2DProxyApiDelegate.swift in Sources */, - 6BF8B124D89139C22CE0ED92FCD22A7F /* CLLocationProxyApiDelegate.swift in Sources */, - 8A227308B98ADBD034FB6A15FE92707B /* CLLocationSourceInformationProxyApiDelegate.swift in Sources */, - BB25AC6305C51351CA44B80314E15A08 /* CLPlacemarkProxyApiDelegate.swift in Sources */, - 5C7F9EAFDB90060C821153417349B450 /* CNPostalAddressProxyApiDelegate.swift in Sources */, - 62B18FC2F6A040D1F9396AEAFDBC0CDC /* geocoding_darwin-dummy.m in Sources */, - 8677B0AEA4C26B53EC584C2203C07319 /* GeocodingDarwinPlugin.swift in Sources */, - 7090D389867C8720355B275C48F0E4FC /* LocaleProxyApiDelegate.swift in Sources */, - 1EBCE5591489EF6DAD7D59A94E49079C /* NSObjectProxyApiDelegate.swift in Sources */, - D39918B7FC72A72510B34D14E50ABE6A /* ProxyApiRegistrar.swift in Sources */, - D09323093D9CD260C4FCFC0617B09534 /* StructWrappers.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2F64E77C103C3280EF51963B8D6A17C2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0D476B81483EC90FC9E8DE5209D22AA3 /* messages.g.swift in Sources */, - AB3CBAF0C34944A0C73FEF82CD2AE42D /* url_launcher_macos-dummy.m in Sources */, - C65AC7C1D279FC94F060ACC6305B7B30 /* UrlLauncherPlugin.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 552BBF8DD56236D228DA81F73F983389 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C377A5C6AD20205FEE45B18E2562DBEC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0EFB405150F9F2865C4555DF395C7182 /* Pods-Runner-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D19AD9043B50DA6EB374D24E8A454F93 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 0BBC79BFF4DCA13CA3F260CB1F4629AB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-Runner"; - target = 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */; - targetProxy = 8AF2D52036BBD51A7FB6CD41009713C9 /* PBXContainerItemProxy */; - }; - 28A5C657486AC0023C6527FBF25A2B6B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = url_launcher_macos; - target = 18785DB831C0FA5904C6F1414D53CB5B /* url_launcher_macos */; - targetProxy = A700F678F0FDCECBBD59D74613AA7839 /* PBXContainerItemProxy */; - }; - 2C3B3CBDDA7ECB03B014CCAFDDE7EEB3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FlutterMacOS; - target = CA272E8348BAB4CE0B0C804FB7B818C4 /* FlutterMacOS */; - targetProxy = 446B514A88FADAEB68B66DD3B79D750C /* PBXContainerItemProxy */; - }; - 3C5BA9131533C8C60B1F74047FE65802 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = geocoding_darwin; - target = 041709380401F170CB24C6ABF2AA6F95 /* geocoding_darwin */; - targetProxy = AFE579245895A7FEA9E396852ACD608C /* PBXContainerItemProxy */; - }; - 6A476E81BE61151F7E0E8AE84CC4DF59 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "geocoding_darwin-geocoding_darwin_privacy"; - target = 21B495F40BC6839AED63A77677F8DD42 /* geocoding_darwin-geocoding_darwin_privacy */; - targetProxy = 9C6BBAA2BBB92A642D8D5B0BD7223791 /* PBXContainerItemProxy */; - }; - 8DF959C20A8668E5FD3A5BF30C277200 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "url_launcher_macos-url_launcher_macos_privacy"; - target = CD7AE32C2F3A14031FB4B912CABCC791 /* url_launcher_macos-url_launcher_macos_privacy */; - targetProxy = 68D75B52376F9B2EE56CD3EFE9C610BF /* PBXContainerItemProxy */; - }; - AA099357E28985E74AE80A0A48FAC60D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FlutterMacOS; - target = CA272E8348BAB4CE0B0C804FB7B818C4 /* FlutterMacOS */; - targetProxy = D706C894401B3917C2185B783AB716DC /* PBXContainerItemProxy */; - }; - B4E6468FA90DB8033CC38FAF30D2C17F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FlutterMacOS; - target = CA272E8348BAB4CE0B0C804FB7B818C4 /* FlutterMacOS */; - targetProxy = 5BA05EE69CE7601D0858876E3F19F4BE /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 07AD40A4677FB80E95DF81E94F42B5EE /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E736E0C9C5B73D27B8865E363E2108AC /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - INFOPLIST_FILE = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Profile; - }; - 0AE172D8F2A4843BFACAD21A0ED26541 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - 27CCA1D346CF695153E0B9C4B4E5B627 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3286FCD502AC5EF7D70294F85382020D /* FlutterMacOS.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_OBJC_WEAK = NO; - COMBINE_HIDPI_IMAGES = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - SDKROOT = macosx; - }; - name = Profile; - }; - 2C2309A39CD7D28EB97512CBFE934003 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B8003E0A47993199F4B4587155DA7EC /* geocoding_darwin.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - GCC_PREFIX_HEADER = "Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/geocoding_darwin/geocoding_darwin.modulemap"; - PRODUCT_MODULE_NAME = geocoding_darwin; - PRODUCT_NAME = geocoding_darwin; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 2F978137B584D9C9A45EC9A374859E7B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B10EFEC4825FC47757F55718F1425F6 /* url_launcher_macos.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/url_launcher_macos"; - IBSC_MODULE = url_launcher_macos; - INFOPLIST_FILE = "Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_NAME = url_launcher_macos_privacy; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 4D76D2BDCED0BA4F5C54E5373904BE43 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74F87FF9A7FF0B11663318DA51C97B54 /* geocoding_darwin.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - GCC_PREFIX_HEADER = "Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/geocoding_darwin/geocoding_darwin.modulemap"; - PRODUCT_MODULE_NAME = geocoding_darwin; - PRODUCT_NAME = geocoding_darwin; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 5513041B72307E3042AE88B7518E63AC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B8003E0A47993199F4B4587155DA7EC /* geocoding_darwin.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/geocoding_darwin"; - IBSC_MODULE = geocoding_darwin; - INFOPLIST_FILE = "Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.15; - PRODUCT_NAME = geocoding_darwin_privacy; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 56497A60AD00A65BB67F4548C5068C0E /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B10EFEC4825FC47757F55718F1425F6 /* url_launcher_macos.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/url_launcher_macos"; - IBSC_MODULE = url_launcher_macos; - INFOPLIST_FILE = "Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_NAME = url_launcher_macos_privacy; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Profile; - }; - 5A458F5B4327B634EA44B348BF63FF58 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3286FCD502AC5EF7D70294F85382020D /* FlutterMacOS.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_OBJC_WEAK = NO; - COMBINE_HIDPI_IMAGES = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - SDKROOT = macosx; - }; - name = Release; - }; - 7240A8579D4E173D4895EA679806EC07 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AC8FE152530FBDCE460186B326C1A8FB /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - INFOPLIST_FILE = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 808E544862838153672EA12FCC127D9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 8E2C2630603A7530835FAC2720EFC5FB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C7507681ACE20E3B7FEC49A0AA8C2DB4 /* url_launcher_macos.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - GCC_PREFIX_HEADER = "Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - MODULEMAP_FILE = "Target Support Files/url_launcher_macos/url_launcher_macos.modulemap"; - PRODUCT_MODULE_NAME = url_launcher_macos; - PRODUCT_NAME = url_launcher_macos; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 8EEC78D2E4358983F6DCCFD6D2591858 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B10EFEC4825FC47757F55718F1425F6 /* url_launcher_macos.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - GCC_PREFIX_HEADER = "Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - MODULEMAP_FILE = "Target Support Files/url_launcher_macos/url_launcher_macos.modulemap"; - PRODUCT_MODULE_NAME = url_launcher_macos; - PRODUCT_NAME = url_launcher_macos; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Profile; - }; - 9847E36DB3EE64730CFBC2CE8B5984A4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 728A5ED1DD60BAC8C8F382A87B976F84 /* Pods-Runner.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - INFOPLIST_FILE = "Target Support Files/Pods-Runner/Pods-Runner-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - A83EE7BD279A10E9D315B282FE6C3BC7 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C50FD10CD19FF6999637BA5ECAF1681B /* Pods-Runner.profile.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - INFOPLIST_FILE = "Target Support Files/Pods-Runner/Pods-Runner-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Profile; - }; - AF5B76B31CAF4546B42C34718BA67232 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_PROFILE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Profile; - }; - B19C1A9D448F4AC85E1E450B01C6E78A /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B8003E0A47993199F4B4587155DA7EC /* geocoding_darwin.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/geocoding_darwin"; - IBSC_MODULE = geocoding_darwin; - INFOPLIST_FILE = "Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.15; - PRODUCT_NAME = geocoding_darwin_privacy; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Profile; - }; - BE96E2DE848706C3D3A92C5FF8E252E2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B10EFEC4825FC47757F55718F1425F6 /* url_launcher_macos.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - GCC_PREFIX_HEADER = "Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - MODULEMAP_FILE = "Target Support Files/url_launcher_macos/url_launcher_macos.modulemap"; - PRODUCT_MODULE_NAME = url_launcher_macos; - PRODUCT_NAME = url_launcher_macos; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - CCCBDF5B3DFCD03DBF3FD7A0A21439A7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B703785507B22BAF0B800737429577EC /* Pods-Runner.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - INFOPLIST_FILE = "Target Support Files/Pods-Runner/Pods-Runner-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - D6D9ADD603376414D6A1C5CE40940469 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74F87FF9A7FF0B11663318DA51C97B54 /* geocoding_darwin.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/geocoding_darwin"; - IBSC_MODULE = geocoding_darwin; - INFOPLIST_FILE = "Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.15; - PRODUCT_NAME = geocoding_darwin_privacy; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - DBF005E23D7BB5F768B6F37BF522182F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C7507681ACE20E3B7FEC49A0AA8C2DB4 /* url_launcher_macos.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/url_launcher_macos"; - IBSC_MODULE = url_launcher_macos; - INFOPLIST_FILE = "Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.14; - PRODUCT_NAME = url_launcher_macos_privacy; - SDKROOT = macosx; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - E3492020E6C8FFFAA75EF20124A3E54A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 03E8AD2E8B75443E12D3D3BD12A9900E /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - INFOPLIST_FILE = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - F3813F9251DE3DEA56EC26564DB0139F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FE4877F8C64A6FB73F1233520E577E74 /* FlutterMacOS.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_OBJC_WEAK = NO; - COMBINE_HIDPI_IMAGES = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - SDKROOT = macosx; - }; - name = Debug; - }; - FEBC906B895DDBC9C96C88BF4D664E65 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B8003E0A47993199F4B4587155DA7EC /* geocoding_darwin.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - FRAMEWORK_SEARCH_PATHS = ( - "\"/Users/maurits/development/flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64\"", - "$(inherited)", - ); - GCC_PREFIX_HEADER = "Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MODULEMAP_FILE = "Target Support Files/geocoding_darwin/geocoding_darwin.modulemap"; - PRODUCT_MODULE_NAME = geocoding_darwin; - PRODUCT_NAME = geocoding_darwin; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Profile; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 2E483D01CF6895378DC29D21F4F855BE /* Build configuration list for PBXNativeTarget "geocoding_darwin-geocoding_darwin_privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D6D9ADD603376414D6A1C5CE40940469 /* Debug */, - B19C1A9D448F4AC85E1E450B01C6E78A /* Profile */, - 5513041B72307E3042AE88B7518E63AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4788107DB7F698C0FCD1A840C508A837 /* Build configuration list for PBXNativeTarget "url_launcher_macos-url_launcher_macos_privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DBF005E23D7BB5F768B6F37BF522182F /* Debug */, - 56497A60AD00A65BB67F4548C5068C0E /* Profile */, - 2F978137B584D9C9A45EC9A374859E7B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 808E544862838153672EA12FCC127D9A /* Debug */, - AF5B76B31CAF4546B42C34718BA67232 /* Profile */, - 0AE172D8F2A4843BFACAD21A0ED26541 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4D05E2F15D12D66695F3DD64906A8953 /* Build configuration list for PBXNativeTarget "Pods-Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9847E36DB3EE64730CFBC2CE8B5984A4 /* Debug */, - A83EE7BD279A10E9D315B282FE6C3BC7 /* Profile */, - CCCBDF5B3DFCD03DBF3FD7A0A21439A7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4FF450190D69A230E20E7B300ACDB0E7 /* Build configuration list for PBXNativeTarget "url_launcher_macos" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8E2C2630603A7530835FAC2720EFC5FB /* Debug */, - 8EEC78D2E4358983F6DCCFD6D2591858 /* Profile */, - BE96E2DE848706C3D3A92C5FF8E252E2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 624022EE1C2EAB1C3CC38699E1368C5F /* Build configuration list for PBXAggregateTarget "FlutterMacOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F3813F9251DE3DEA56EC26564DB0139F /* Debug */, - 27CCA1D346CF695153E0B9C4B4E5B627 /* Profile */, - 5A458F5B4327B634EA44B348BF63FF58 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 894E59F2224DC04AB8FBC72F67FDC884 /* Build configuration list for PBXNativeTarget "geocoding_darwin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4D76D2BDCED0BA4F5C54E5373904BE43 /* Debug */, - FEBC906B895DDBC9C96C88BF4D664E65 /* Profile */, - 2C2309A39CD7D28EB97512CBFE934003 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D52099AA1537D0F3745166E1889F6CA3 /* Build configuration list for PBXNativeTarget "Pods-RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E3492020E6C8FFFAA75EF20124A3E54A /* Debug */, - 07AD40A4677FB80E95DF81E94F42B5EE /* Profile */, - 7240A8579D4E173D4895EA679806EC07 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; -} diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/FlutterMacOS.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/FlutterMacOS.xcscheme deleted file mode 100644 index 7c07e83..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/FlutterMacOS.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-Runner.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-Runner.xcscheme deleted file mode 100644 index 2eb6216..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-Runner.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-RunnerTests.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-RunnerTests.xcscheme deleted file mode 100644 index ce8b385..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/Pods-RunnerTests.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin-geocoding_darwin_privacy.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin-geocoding_darwin_privacy.xcscheme deleted file mode 100644 index b82693a..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin-geocoding_darwin_privacy.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin.xcscheme deleted file mode 100644 index 5bc558e..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/geocoding_darwin.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos-url_launcher_macos_privacy.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos-url_launcher_macos_privacy.xcscheme deleted file mode 100644 index a09484d..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos-url_launcher_macos_privacy.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos.xcscheme b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos.xcscheme deleted file mode 100644 index c3a6caf..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/url_launcher_macos.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist b/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 217efc0..0000000 --- a/geocoding_darwin/example/macos/Pods/Pods.xcodeproj/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,46 +0,0 @@ - - - - - SchemeUserState - - FlutterMacOS.xcscheme - - isShown - - - Pods-Runner.xcscheme - - isShown - - - Pods-RunnerTests.xcscheme - - isShown - - - geocoding_darwin-geocoding_darwin_privacy.xcscheme - - isShown - - - geocoding_darwin.xcscheme - - isShown - - - url_launcher_macos-url_launcher_macos_privacy.xcscheme - - isShown - - - url_launcher_macos.xcscheme - - isShown - - - - SuppressBuildableAutocreation - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.debug.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.debug.xcconfig deleted file mode 100644 index 222fc41..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.debug.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FlutterMacOS -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Flutter/ephemeral -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.release.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.release.xcconfig deleted file mode 100644 index 222fc41..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/FlutterMacOS/FlutterMacOS.release.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FlutterMacOS -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Flutter/ephemeral -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-Info.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-Info.plist deleted file mode 100644 index 19cf209..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - ${PODS_DEVELOPMENT_LANGUAGE} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.markdown b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.markdown deleted file mode 100644 index 91dd95e..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.markdown +++ /dev/null @@ -1,57 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## geocoding_darwin - -MIT License - -Copyright (c) 2018 Baseflow - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## url_launcher_macos - -Copyright 2013 The Flutter Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Generated by CocoaPods - https://cocoapods.org diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.plist deleted file mode 100644 index 963f939..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.plist +++ /dev/null @@ -1,93 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - MIT License - -Copyright (c) 2018 Baseflow - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - geocoding_darwin - Type - PSGroupSpecifier - - - FooterText - Copyright 2013 The Flutter Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - License - BSD - Title - url_launcher_macos - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m deleted file mode 100644 index 0b73bc1..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_Runner : NSObject -@end -@implementation PodsDummy_Pods_Runner -@end diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist deleted file mode 100644 index 05ebcad..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh -${BUILT_PRODUCTS_DIR}/geocoding_darwin/geocoding_darwin.framework -${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework \ No newline at end of file diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist deleted file mode 100644 index aee643b..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/geocoding_darwin.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_macos.framework \ No newline at end of file diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-input-files.xcfilelist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-input-files.xcfilelist deleted file mode 100644 index 05ebcad..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh -${BUILT_PRODUCTS_DIR}/geocoding_darwin/geocoding_darwin.framework -${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework \ No newline at end of file diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-output-files.xcfilelist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-output-files.xcfilelist deleted file mode 100644 index aee643b..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/geocoding_darwin.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_macos.framework \ No newline at end of file diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-input-files.xcfilelist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-input-files.xcfilelist deleted file mode 100644 index 05ebcad..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh -${BUILT_PRODUCTS_DIR}/geocoding_darwin/geocoding_darwin.framework -${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework \ No newline at end of file diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-output-files.xcfilelist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-output-files.xcfilelist deleted file mode 100644 index aee643b..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/geocoding_darwin.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_macos.framework \ No newline at end of file diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh deleted file mode 100755 index 57a5442..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh +++ /dev/null @@ -1,192 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -BCSYMBOLMAP_DIR="BCSymbolMaps" - - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink -f "${source}")" - fi - - if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then - # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied - find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do - echo "Installing $f" - install_bcsymbolmap "$f" "$destination" - rm "$f" - done - rmdir "${source}/${BCSYMBOLMAP_DIR}" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - elif [ -L "${binary}" ]; then - echo "Destination binary is symlinked..." - dirname="$(dirname "${binary}")" - binary="${dirname}/$(readlink "${binary}")" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - warn_missing_arch=${2:-true} - if [ -r "$source" ]; then - # Copy the dSYM into the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .dSYM "$source")" - binary_name="$(ls "$source/Contents/Resources/DWARF")" - binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - - # Strip invalid architectures from the dSYM. - if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then - strip_invalid_archs "$binary" "$warn_missing_arch" - fi - if [[ $STRIP_BINARY_RETVAL == 0 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - mkdir -p "${DWARF_DSYM_FOLDER_PATH}" - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" - fi - fi -} - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - warn_missing_arch=${2:-true} - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - if [[ "$warn_missing_arch" == "true" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - fi - STRIP_BINARY_RETVAL=1 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=0 -} - -# Copies the bcsymbolmap files of a vendored framework -install_bcsymbolmap() { - local bcsymbolmap_path="$1" - local destination="${BUILT_PRODUCTS_DIR}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identity - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/geocoding_darwin/geocoding_darwin.framework" - install_framework "${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework" -fi -if [[ "$CONFIGURATION" == "Profile" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/geocoding_darwin/geocoding_darwin.framework" - install_framework "${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/geocoding_darwin/geocoding_darwin.framework" - install_framework "${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework" -fi -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-umbrella.h b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-umbrella.h deleted file mode 100644 index 80f15ff..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_RunnerVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_RunnerVersionString[]; - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig deleted file mode 100644 index ea89ba5..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin/geocoding_darwin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos/url_launcher_macos.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/../Frameworks' '@loader_path/Frameworks' "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "geocoding_darwin" -framework "url_launcher_macos" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/FlutterMacOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "-F${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.modulemap b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.modulemap deleted file mode 100644 index d2cf6f6..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_Runner { - umbrella header "Pods-Runner-umbrella.h" - - export * - module * { export * } -} diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig deleted file mode 100644 index ea89ba5..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin/geocoding_darwin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos/url_launcher_macos.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/../Frameworks' '@loader_path/Frameworks' "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "geocoding_darwin" -framework "url_launcher_macos" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/FlutterMacOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "-F${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig deleted file mode 100644 index ea89ba5..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin/geocoding_darwin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos/url_launcher_macos.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/../Frameworks' '@loader_path/Frameworks' "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "geocoding_darwin" -framework "url_launcher_macos" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/FlutterMacOS" "-F${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "-F${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist deleted file mode 100644 index 19cf209..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - ${PODS_DEVELOPMENT_LANGUAGE} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.markdown b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.markdown deleted file mode 100644 index 102af75..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.markdown +++ /dev/null @@ -1,3 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: -Generated by CocoaPods - https://cocoapods.org diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.plist deleted file mode 100644 index 7acbad1..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-acknowledgements.plist +++ /dev/null @@ -1,29 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-dummy.m b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-dummy.m deleted file mode 100644 index a664d4a..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_RunnerTests : NSObject -@end -@implementation PodsDummy_Pods_RunnerTests -@end diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-umbrella.h b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-umbrella.h deleted file mode 100644 index edfc7f8..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_RunnerTestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_RunnerTestsVersionString[]; - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig deleted file mode 100644 index 9266441..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin/geocoding_darwin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos/url_launcher_macos.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift -LIBRARY_SEARCH_PATHS = $(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "geocoding_darwin" -framework "url_launcher_macos" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap deleted file mode 100644 index c3d99a7..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_RunnerTests { - umbrella header "Pods-RunnerTests-umbrella.h" - - export * - module * { export * } -} diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig deleted file mode 100644 index 9266441..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin/geocoding_darwin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos/url_launcher_macos.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift -LIBRARY_SEARCH_PATHS = $(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "geocoding_darwin" -framework "url_launcher_macos" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig deleted file mode 100644 index 9266441..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin/geocoding_darwin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos/url_launcher_macos.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift -LIBRARY_SEARCH_PATHS = $(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "geocoding_darwin" -framework "url_launcher_macos" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist deleted file mode 100644 index e22a9aa..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/ResourceBundle-geocoding_darwin_privacy-geocoding_darwin-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - ${PODS_DEVELOPMENT_LANGUAGE} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.0.1 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist deleted file mode 100644 index 8928a8d..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - ${PODS_DEVELOPMENT_LANGUAGE} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.0.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-dummy.m b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-dummy.m deleted file mode 100644 index ec4f35b..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_geocoding_darwin : NSObject -@end -@implementation PodsDummy_geocoding_darwin -@end diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch deleted file mode 100644 index 082f8af..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-umbrella.h b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-umbrella.h deleted file mode 100644 index 78ec060..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double geocoding_darwinVersionNumber; -FOUNDATION_EXPORT const unsigned char geocoding_darwinVersionString[]; - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.debug.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.debug.xcconfig deleted file mode 100644 index 1376cee..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.debug.xcconfig +++ /dev/null @@ -1,18 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin -DEFINES_MODULE = YES -EXCLUDED_ARCHS[sdk=iphonesimulator*] = i386 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Flutter/ephemeral/.symlinks/plugins/geocoding_darwin/darwin -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.modulemap b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.modulemap deleted file mode 100644 index c69b37e..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module geocoding_darwin { - umbrella header "geocoding_darwin-umbrella.h" - - export * - module * { export * } -} diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.release.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.release.xcconfig deleted file mode 100644 index 1376cee..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/geocoding_darwin/geocoding_darwin.release.xcconfig +++ /dev/null @@ -1,18 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/geocoding_darwin -DEFINES_MODULE = YES -EXCLUDED_ARCHS[sdk=iphonesimulator*] = i386 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Flutter/ephemeral/.symlinks/plugins/geocoding_darwin/darwin -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist deleted file mode 100644 index e22a9aa..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/ResourceBundle-url_launcher_macos_privacy-url_launcher_macos-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - ${PODS_DEVELOPMENT_LANGUAGE} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.0.1 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist deleted file mode 100644 index 8928a8d..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - ${PODS_DEVELOPMENT_LANGUAGE} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.0.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-dummy.m b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-dummy.m deleted file mode 100644 index 40b90f0..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_url_launcher_macos : NSObject -@end -@implementation PodsDummy_url_launcher_macos -@end diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch deleted file mode 100644 index 082f8af..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-umbrella.h b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-umbrella.h deleted file mode 100644 index bcacf5a..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double url_launcher_macosVersionNumber; -FOUNDATION_EXPORT const unsigned char url_launcher_macosVersionString[]; - diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.debug.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.debug.xcconfig deleted file mode 100644 index 1549b49..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.modulemap b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.modulemap deleted file mode 100644 index 6317545..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module url_launcher_macos { - umbrella header "url_launcher_macos-umbrella.h" - - export * - module * { export * } -} diff --git a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.release.xcconfig b/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.release.xcconfig deleted file mode 100644 index 1549b49..0000000 --- a/geocoding_darwin/example/macos/Pods/Target Support Files/url_launcher_macos/url_launcher_macos.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_macos -DEFINES_MODULE = YES -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj b/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj index ea2ffe1..42c3025 100644 --- a/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj +++ b/geocoding_darwin/example/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,7 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 48ABEFB258AE83B4743B4710 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B09F7F8CD9716B0F0E3BC98 /* Pods_Runner.framework */; }; - BA9665A6E1BC259A67E02AF8 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88C4DB08B12E04FD63D80D5C /* Pods_RunnerTests.framework */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +61,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 287FCF00A868D8A6727C387B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 28B8835629FC83409C505B2A /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -80,14 +77,8 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 4B09F7F8CD9716B0F0E3BC98 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6498F3D5E582131D94597230 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 88C4DB08B12E04FD63D80D5C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 908C58137FEFFC3F3DB14060 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B69E915DDAE5DD7AA8F7C077 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - FCBB901320B096B07F0E75A8 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +86,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BA9665A6E1BC259A67E02AF8 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +93,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 48ABEFB258AE83B4743B4710 /* Pods_Runner.framework in Frameworks */, + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -113,12 +103,6 @@ 02464DC4B22221A691E25E06 /* Pods */ = { isa = PBXGroup; children = ( - 6498F3D5E582131D94597230 /* Pods-Runner.debug.xcconfig */, - 908C58137FEFFC3F3DB14060 /* Pods-Runner.release.xcconfig */, - 287FCF00A868D8A6727C387B /* Pods-Runner.profile.xcconfig */, - B69E915DDAE5DD7AA8F7C077 /* Pods-RunnerTests.debug.xcconfig */, - FCBB901320B096B07F0E75A8 /* Pods-RunnerTests.release.xcconfig */, - 28B8835629FC83409C505B2A /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -149,7 +133,6 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, 02464DC4B22221A691E25E06 /* Pods */, ); sourceTree = ""; @@ -198,15 +181,6 @@ path = Runner; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4B09F7F8CD9716B0F0E3BC98 /* Pods_Runner.framework */, - 88C4DB08B12E04FD63D80D5C /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -214,7 +188,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - D657B4682C87E22D89690F5D /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -233,13 +206,11 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 650BCB0EB25709F3C36549AB /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - C1C3D5E969954BB98E819A17 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -247,6 +218,9 @@ 33CC11202044C79F0003C045 /* PBXTargetDependency */, ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 33CC10ED2044A3C60003C045 /* geocoding_darwin_example.app */; productType = "com.apple.product-type.application"; @@ -291,6 +265,9 @@ Base, ); mainGroup = 33CC10E42044A3C60003C045; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -360,67 +337,6 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 650BCB0EB25709F3C36549AB /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C1C3D5E969954BB98E819A17 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - D657B4682C87E22D89690F5D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -472,7 +388,6 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B69E915DDAE5DD7AA8F7C077 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -487,7 +402,6 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FCBB901320B096B07F0E75A8 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -502,7 +416,6 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28B8835629FC83409C505B2A /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -798,6 +711,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 33CC10E52044A3C60003C045 /* Project object */; } diff --git a/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index d33269c..4be1b4c 100644 --- a/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/geocoding_darwin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + 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

9yGp11G?`E!)dXaQu2W~J` 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 Date: Fri, 11 Jul 2025 11:33:10 +0200 Subject: [PATCH 4/4] Rename default locale to better fit smaller screens --- .../maurits.xcuserdatad/xcschemes/xcschememanagement.plist | 2 +- geocoding_darwin/example/lib/main.dart | 2 +- .../Packages/FlutterGeneratedPluginSwiftPackage/Package.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/geocoding_darwin/darwin/geocoding_darwin/.swiftpm/xcode/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist b/geocoding_darwin/darwin/geocoding_darwin/.swiftpm/xcode/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist index 0cf3fba..7a10324 100644 --- a/geocoding_darwin/darwin/geocoding_darwin/.swiftpm/xcode/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/geocoding_darwin/darwin/geocoding_darwin/.swiftpm/xcode/xcuserdata/maurits.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ geocoding-darwin.xcscheme_^#shared#^_ orderHint - 2 + 1 geocoding_darwin.xcscheme_^#shared#^_ diff --git a/geocoding_darwin/example/lib/main.dart b/geocoding_darwin/example/lib/main.dart index 231cdd1..9315870 100644 --- a/geocoding_darwin/example/lib/main.dart +++ b/geocoding_darwin/example/lib/main.dart @@ -72,7 +72,7 @@ class _GeocodeWidgetState extends State { dropdownMenuEntries: >[ DropdownMenuEntry( value: Localizations.localeOf(context), - label: 'Default system locale', + label: 'Default locale', ), DropdownMenuEntry( value: Locale('en_US'), diff --git a/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift b/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift index 5359eb8..7f421ef 100644 --- a/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift +++ b/geocoding_darwin/example/macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift @@ -9,7 +9,7 @@ import PackageDescription let package = Package( name: "FlutterGeneratedPluginSwiftPackage", platforms: [ - .macOS("10.15") + .macOS("10.14") ], products: [ .library(name: "FlutterGeneratedPluginSwiftPackage", type: .static, targets: ["FlutterGeneratedPluginSwiftPackage"])