Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f502e66
Start with adding 3DS screen customization
Robert-SD Feb 9, 2026
96e4376
Added iOS layer for 3DS customization support
Robert-SD Feb 10, 2026
40fea36
Add input decoration for 3DS screen
Robert-SD Feb 11, 2026
0beeeb7
Merge branch 'main' into feature/add3DSUiCustomization
Robert-SD Feb 12, 2026
f6c2439
Cleanup of customization dto mapping
Robert-SD Feb 12, 2026
b5bd823
Merged the buttons into primary and secondary
Robert-SD Feb 13, 2026
0733a4e
Add unit tests for 3DS2 UI customization mapping
Robert-SD Feb 13, 2026
a3b1bec
Add labelCustomization
Robert-SD Feb 13, 2026
0cd66cb
Applied changes from code review and added more unit tests for Android
Robert-SD Feb 16, 2026
1b4b2cc
Added more ios unit tests
Robert-SD Feb 16, 2026
6d57d11
Removing textFontSize for Android title
Robert-SD Feb 16, 2026
bde0ca2
Fixing failing test
Robert-SD Feb 16, 2026
cbb9336
Add 3DS2 selection item customization
Robert-SD Feb 16, 2026
1ed4b8c
Fix unit test
Robert-SD Feb 17, 2026
4d836c9
Added more variants to dart theme unit test
Robert-SD Feb 17, 2026
2fccc24
Update AGENTS.md
Robert-SD Feb 17, 2026
82d0018
Added recommendations from code review
Robert-SD Feb 17, 2026
e92620f
Remove button text customization
Robert-SD Feb 17, 2026
312809d
Update 3DS2 customization and fix iOS selection mapping
Robert-SD Feb 17, 2026
204c638
Update 3DS2 customization documentation and example configuration
Robert-SD Feb 17, 2026
a57d56c
Update customization documentation
Robert-SD Feb 17, 2026
79dc135
apply changes from code review and adjust tests to the removal of the…
Robert-SD Feb 18, 2026
e35959d
Update ios/adyen_checkout/Sources/adyen_checkout/utils/ConfigurationM…
Robert-SD Feb 18, 2026
6ad2679
Apply code format
Robert-SD Feb 18, 2026
83bdbf2
Rework of the 3DS UI customization example and doc.
Robert-SD Feb 18, 2026
4d94d71
Optimized AGENTS file
Robert-SD Feb 18, 2026
28d312d
Remove Mockk and enable default values for unit tests
Robert-SD Feb 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 46 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,45 @@ adyen-flutter/
└── example/ # Example Flutter app
```

## Planning Flutter Features

- **[Write the plan]** Store implementation plans in the appropriate plan folder.
- **[Problem statement + non-goals]** Start the plan with a short problem statement and explicit
non-goals/out-of-scope.
- **[Public API sketch first]** Define the intended Dart-facing API early (types + a short usage
snippet). Keep it Flutter-idiomatic and minimal.
- **[Ownership + data flow]** Decide and document what happens in Flutter vs native.
- **[Acceptance criteria]** Add a small checklist of observable behaviors, including
backwards-compat expectations ("when omitted, existing behavior is unchanged").
- **[Clarify unknowns]** Ask questions when requirements are unclear instead of making assumptions.
- **[Phase-based delivery]** Break work into phases that can be completed and validated
independently. A good default for cross-platform features is:
- **[Flutter models]** Public Dart API models.
- **[Pigeon DTOs + codegen]** Define DTOs in `pigeons/platform_api.dart`, then generate.
- **[Dart DTO mapping]** Map public models to DTOs in `lib/src/util/dto_mapper.dart`.
- **[Android mapping]** Map DTOs to Android SDK types.
- **[iOS mapping]** Map DTOs to iOS SDK types.
- **[Finalization]** Exports, tests, example usage, docs, changelog.
- **[Keep the public API clean]** Prefer a Flutter-idiomatic abstraction (simple Dart models) and do
the complex mapping internally. Avoid exposing native SDK configuration graphs directly.
- **[Backwards compatibility]** New fields should be optional and default to current behavior when
omitted.
- **[DTO structure]** When adding platform configuration, design DTOs to match the native SDK
structure the platform code needs, minimizing transformation on native.
- **[Named parameters for DTOs]** Prefer named parameters when constructing DTOs (especially
Pigeon-generated DTOs) and any constructors with many fields. This improves readability and avoids
breakage when constructor signatures change.
- **[Value/format decisions]** Decide early where conversions happen (e.g., `Color` to hex string,
`double` to `int` rounding) and keep that logic in one place.
- **[Validation strategy]** Validate obvious invalid values on the Flutter side where feasible (for
clearer errors), while keeping defaults/omitted values delegated to the native SDK.
- **[Testing + manual verification]** Plan both unit tests (Flutter mapping) and manual verification
steps (Android + iOS), especially for UI changes.
- **[Risks + mitigations]** List the top risks (platform differences, invalid values, SDK
limitations) and how you’ll validate/mitigate.
- **[Done definition]** End the plan with “done when” items (codegen committed, tests passing,
example updated, docs/changelog updated).

## Idiomatic Flutter Practices

### General
Expand Down Expand Up @@ -258,12 +297,13 @@ Flutter Widget (Dart)

## Testing

- When creating or updating iOS tests, always follow the Adyen iOS SDK testing guide: https://github.com/Adyen/adyen-ios/blob/develop/TESTING.md
- When creating or updating iOS tests, always follow the Adyen iOS SDK testing
guide: https://github.com/Adyen/adyen-ios/blob/develop/TESTING.md
- Run with `flutter test`
- Test both model classes and DTO mappings

| Platform | Where to put tests | Notes |
|---|---|---|
| Flutter (Dart) | `test/` | Dart unit tests |
| Android | `android/src/test/kotlin/...` | JVM unit tests. If you need instrumentation tests, use `android/src/androidTest/kotlin/...`. |
| iOS | `example/ios/RunnerTests/` | Xcode/Swift tests for the iOS example app target. |
| Platform | Where to put tests | Notes |
|----------------|-------------------------------|----------------------------------------------------------------------------------------------|
| Flutter (Dart) | `test/` | Dart unit tests |
| Android | `android/src/test/kotlin/...` | JVM unit tests. If you need instrumentation tests, use `android/src/androidTest/kotlin/...`. |
| iOS | `example/ios/RunnerTests/` | Xcode/Swift tests for the iOS example app target. |
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

### New

-
- Added 3DS2 UI customization via `Adyen3DSTheme`, including `fromThemeData()` support.

## 1.8.0

Expand Down
15 changes: 9 additions & 6 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,16 @@ android {
}

testOptions {
unitTests.all {
useJUnitPlatform()
unitTests {
returnDefaultValues = true
all {
useJUnitPlatform()

testLogging {
events "passed", "skipped", "failed", "standardOut", "standardError"
outputs.upToDateWhen { false }
showStandardStreams = true
testLogging {
events "passed", "skipped", "failed", "standardOut", "standardError"
outputs.upToDateWhen { false }
showStandardStreams = true
}
}
}
}
Expand Down
Loading
Loading