Skip to content

Conversation

@cameron-radar
Copy link
Contributor

No description provided.

…ronmorrow1/fence-2577-bump-flutter-ios-to-3240

Future<void> initRadar() async {
Radar.initialize('prj_test_pk_0000000000000000000000000000000000000000');
Radar.initialize('prj_test_pk_0000000000000000000000000000000000000000', silentPush: true);
Copy link
Contributor

@ShiCheng-Lu ShiCheng-Lu Nov 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should make this initialize option a typed dictionary / object instead if those exist.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think dart has those, we'd have to make a class

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe we should make a class then, I think if we have more initialize options in the future, or if we want to expose some of the initialize options that we already have, it'll be easier to manage. maybe a non-typed dictionary can also work if we document the available options well within the code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use a class then the class would have to use the same constructor as here. if we make it non-typed we invite user error. silentPush is a named parameter here, so it's optional and they can pass it like silentPush: true. Basically a typed object without the brackets.

https://dart.dev/language/functions#named-parameters

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the Flutter Radar SDK from version 3.12.4 to 3.24.0, upgrading both iOS and Android native SDK dependencies and introducing new API functionality for tags, products, verified tracking enhancements, and in-app messaging.

Key Changes:

  • Upgraded iOS SDK from 3.19.5 to 3.24.0 and Android SDK to 3.23.5
  • Added new API methods: setProduct, getProduct, getTags, addTags, removeTags, isTrackingVerified, clearVerifiedLocationToken, and showInAppMessage
  • Enhanced initialize method with silentPush parameter and trackVerified with additional accuracy/tracking options
  • Updated iOS minimum deployment target from 10.0 to 12.0 and example app to 13.0
  • Upgraded build tools: Android Gradle Plugin to 8.6.0, Gradle to 8.7, and compileSdkVersion to 35

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
pubspec.yaml Updated package version to 3.24.0
lib/flutter_radar.dart Added new API methods for product/tags management, verified tracking, in-app messaging; enhanced existing methods with new parameters
ios/flutter_radar.podspec.template Updated iOS minimum platform from 10.0 to 12.0
ios/flutter_radar.podspec Updated version to 3.24.0 and iOS SDK dependency to 3.24.0; bumped platform to 12.0
ios/Classes/RadarFlutterPlugin.m Implemented new API methods and updated initialization with silentPush option; changed to module import syntax
example/pubspec.yaml Updated permission_handler dependency to 12.0.0
example/lib/main.dart Added silentPush initialization example and showInAppMessage demo; updated foreground service config
example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme Added LLDB configuration for Flutter debugging
example/ios/Runner.xcodeproj/project.pbxproj Migrated from static library to dynamic framework linking; updated iOS deployment target to 13.0
example/ios/Podfile Updated platform to 13.0, added use_frameworks!, updated RadarSDKMotion to 3.24.0
example/ios/Flutter/AppFrameworkInfo.plist Updated minimum OS version to 13.0
example/android/settings.gradle Updated Android Gradle Plugin to 8.6.0
example/android/gradle/wrapper/gradle-wrapper.properties Updated Gradle to 8.7
example/android/app/src/main/java/io/radar/example/MainApplication.java Removed deprecated FlutterMain initialization
example/android/app/build.gradle Added namespace, updated compileSdkVersion to 35, updated SDK to 3.23.5
android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java Implemented new API methods and enhanced initialization/trackVerified with additional parameters
android/gradle/wrapper/gradle-wrapper.properties Updated Gradle to 8.5
android/build.gradle Added Kotlin plugin, updated versionName to 3.23.5, SDK dependency to 3.23.5, added compile/Kotlin options
README.md Added iOS installation note about use_frameworks! requirement
CHANGELOG.md Added changelog entries for beta versions
Comments suppressed due to low confidence (4)

lib/flutter_radar.dart:548

  • [nitpick] Missing error handling for the return value. Unlike other getter methods in this file (e.g., getTags, isTrackingVerified), getProduct doesn't wrap the platform call in a try-catch block. While platform exceptions may be handled by Flutter's platform channel, for consistency with the codebase pattern, consider adding error handling.
  static Future<String?> getProduct() async {
    return await _channel.invokeMethod('getProduct');
  }

lib/flutter_radar.dart:552

  • [nitpick] Missing error handling for the return value. The getTags method doesn't wrap the platform call in a try-catch block. While platform exceptions may be handled by Flutter's platform channel, for consistency with the codebase pattern (as seen in setter methods), consider adding error handling.
  static Future<List<String>?> getTags() async {
    return await _channel.invokeMethod('getTags');
  }

lib/flutter_radar.dart:572

  • [nitpick] Missing error handling for the return value. The isTrackingVerified method doesn't wrap the platform call in a try-catch block. For consistency with the codebase pattern (as seen in setter methods), consider adding error handling.
  static Future<bool?> isTrackingVerified() async {
    return await _channel.invokeMethod('isTrackingVerified');
  }

android/build.gradle:51

  • Version mismatch: The Android SDK dependency version is 3.23.5, but the iOS SDK dependency (in flutter_radar.podspec) is 3.24.0. These should be aligned unless there's a specific reason for the difference, which should be documented.
    implementation 'io.radar:sdk:3.23.5'

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants