Repository navigation
Release/2026 10 25 - #735
gnomezgrave wants to merge 206 commits into
Conversation
# Conflicts: # tests/linux/flutter/generated_plugin_registrant.cc # tests/linux/flutter/generated_plugins.cmake # tests/windows/flutter/generated_plugin_registrant.cc # tests/windows/flutter/generated_plugins.cmake
…_translation_ro
Merge branch 'firebase:main' into 'MahMoos:fix_sign_in_with_apple_ar_translation'
…se#300) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…rebase#271) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…se#299) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
feat: Port Firebase UI to Forui (forui_firebase_ui_* 0.1.0)
- forui_firebase_ui_auth@0.2.0 - forui_firebase_ui_database@0.2.0 - forui_firebase_ui_firestore@0.2.0 - forui_firebase_ui_localizations@0.2.0 - forui_firebase_ui_oauth@0.2.0 - forui_firebase_ui_oauth_apple@0.2.0 - forui_firebase_ui_oauth_facebook@0.2.0 - forui_firebase_ui_oauth_google@0.2.0 - forui_firebase_ui_oauth_twitter@0.2.0 - forui_firebase_ui_shared@0.1.1 - forui_firebase_ui_storage@0.2.0
- forui_firebase_ui_auth@0.3.0 - forui_firebase_ui_database@0.3.0 - forui_firebase_ui_firestore@0.3.0 - forui_firebase_ui_localizations@0.3.0 - forui_firebase_ui_oauth@0.3.0 - forui_firebase_ui_oauth_apple@0.3.0 - forui_firebase_ui_oauth_facebook@0.3.0 - forui_firebase_ui_oauth_google@0.3.0 - forui_firebase_ui_oauth_twitter@0.3.0 - forui_firebase_ui_shared@0.1.2 - forui_firebase_ui_storage@0.3.0
Nothing has been published yet; drop the melos-generated 0.2.0/0.3.0 bumps and keep initial-release changelogs only. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Code Review
This pull request ports the Firebase UI for Flutter packages to the Forui UI library, replacing Material and Cupertino widgets with Forui equivalents across authentication, database, and storage components. The code review identified several critical compilation errors across multiple files due to the use of unsupported implicit leading-dot syntax for constructors, controls, and enum values (such as .lifted, .context(), .managed(), and .ghost). These must be explicitly qualified with their respective types (e.g., FSelectControl, FAvatarStyleDelta, FOtpControl, FTextFieldControl, and FButtonVariant), and the type requirements for FSelect items and hints must be corrected.
| final countryItems = { | ||
| for (final country in countries) country.name: country.countryCode, | ||
| }; | ||
|
|
||
| return Form( | ||
| key: formKey, | ||
| child: Column( | ||
| children: [ | ||
| if (isCupertino) | ||
| GestureDetector( | ||
| onTap: () { | ||
| _showCountryPicker(context); | ||
| FSelect<String>.search( | ||
| items: countryItems, | ||
| hint: countryController.text.isNotEmpty && !isValidCountryCode | ||
| ? l.invalidCountryCode | ||
| : l.chooseACountry, | ||
| control: .lifted( |
There was a problem hiding this comment.
In Dart, implicit member/constructor lookup with a leading dot (e.g., .lifted) is not supported. Additionally, FSelect expects items to be of type Map<Widget, T> and hint to be a Widget?. Passing raw Strings directly will cause compilation errors.
final countryItems = {
for (final country in countries) Text(country.name): country.countryCode,
};
return Form(
key: formKey,
child: Column(
children: [
FSelect<String>.search(
items: countryItems,
hint: Text(
countryController.text.isNotEmpty && !isValidCountryCode
? l.invalidCountryCode
: l.chooseACountry,
),
control: FSelectControl.lifted(| final FAvatarStyleDelta style = widget.placeholderColor == null | ||
| ? const .context() | ||
| : .delta(backgroundColor: widget.placeholderColor); |
There was a problem hiding this comment.
Dart does not support implicit constructor/member lookup with a leading dot (e.g., .context() or .delta()). You must explicitly qualify these constructor calls with the class name FAvatarStyleDelta.
| final FAvatarStyleDelta style = widget.placeholderColor == null | |
| ? const .context() | |
| : .delta(backgroundColor: widget.placeholderColor); | |
| final FAvatarStyleDelta style = widget.placeholderColor == null | |
| ? const FAvatarStyleDelta.context() | |
| : FAvatarStyleDelta.delta(backgroundColor: widget.placeholderColor); |
| ), | ||
| const SizedBox(height: 8), | ||
| UnconstrainedBox( | ||
| child: FOtpField( |
There was a problem hiding this comment.
| return TextFormField( | ||
| Widget build(BuildContext context) { | ||
| return FTextFormField( | ||
| control: .managed(controller: controller), |
There was a problem hiding this comment.
Dart does not support implicit constructor/member lookup with a leading dot (e.g., .managed()). You must explicitly qualify this constructor call with the class name FTextFieldControl.
| control: .managed(controller: controller), | |
| control: FTextFieldControl.managed(controller: controller), |
|
|
||
| if (showVisibilityToggle) { | ||
| return FTextFormField.password( | ||
| control: .managed(controller: controller), |
There was a problem hiding this comment.
Dart does not support implicit constructor/member lookup with a leading dot (e.g., .managed()). You must explicitly qualify this constructor call with the class name FTextFieldControl.
| control: .managed(controller: controller), | |
| control: FTextFieldControl.managed(controller: controller), |
| icon: Icon(materialIcon), | ||
| Widget build(BuildContext context) { | ||
| return FButton.icon( | ||
| variant: .ghost, |
| ).then((_) => widget.onProviderLinked()), | ||
| ) | ||
| FButton.icon( | ||
| variant: .ghost, |
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
Description
Replace this paragraph with a description of what this PR is doing. If you're modifying existing behavior, describe the existing behavior, how this PR is changing it, and what motivated the change.
Related Issues
Replace this paragraph with a list of issues related to this PR from the issue database. Indicate, which of these issues are resolved or fixed by this PR.
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]).This will ensure a smooth and quick review process. Updating the
pubspec.yamland changelogs is not required.///).melos run analyze) does not report any problems on my PR.melos run test:unit:alldoesn't fail).Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?