|
|
|
@ -21,6 +21,7 @@ class PLanguageDropdown extends StatefulWidget {
|
|
|
|
final String? Function(LanguageModel?)? validator;
|
|
|
|
final String? Function(LanguageModel?)? validator;
|
|
|
|
final Color? backgroundColor;
|
|
|
|
final Color? backgroundColor;
|
|
|
|
final bool hasError;
|
|
|
|
final bool hasError;
|
|
|
|
|
|
|
|
final bool enabled;
|
|
|
|
|
|
|
|
|
|
|
|
const PLanguageDropdown({
|
|
|
|
const PLanguageDropdown({
|
|
|
|
super.key,
|
|
|
|
super.key,
|
|
|
|
@ -34,6 +35,7 @@ class PLanguageDropdown extends StatefulWidget {
|
|
|
|
this.validator,
|
|
|
|
this.validator,
|
|
|
|
this.backgroundColor,
|
|
|
|
this.backgroundColor,
|
|
|
|
this.hasError = false,
|
|
|
|
this.hasError = false,
|
|
|
|
|
|
|
|
this.enabled = true,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
@ -87,12 +89,14 @@ class PLanguageDropdownState extends State<PLanguageDropdown> {
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
DropdownButtonFormField2<LanguageModel>(
|
|
|
|
DropdownButtonFormField2<LanguageModel>(
|
|
|
|
|
|
|
|
enableFeedback: widget.enabled,
|
|
|
|
customButton: widget.initialLanguage != null &&
|
|
|
|
customButton: widget.initialLanguage != null &&
|
|
|
|
sortedLanguages.contains(widget.initialLanguage)
|
|
|
|
sortedLanguages.contains(widget.initialLanguage)
|
|
|
|
? LanguageDropDownEntry(
|
|
|
|
? LanguageDropDownEntry(
|
|
|
|
languageModel: widget.initialLanguage!,
|
|
|
|
languageModel: widget.initialLanguage!,
|
|
|
|
isL2List: widget.isL2List,
|
|
|
|
isL2List: widget.isL2List,
|
|
|
|
isDropdown: true,
|
|
|
|
isDropdown: true,
|
|
|
|
|
|
|
|
enabled: widget.enabled,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
: null,
|
|
|
|
: null,
|
|
|
|
menuItemStyleData: const MenuItemStyleData(
|
|
|
|
menuItemStyleData: const MenuItemStyleData(
|
|
|
|
@ -131,6 +135,7 @@ class PLanguageDropdownState extends State<PLanguageDropdown> {
|
|
|
|
if (widget.showMultilingual)
|
|
|
|
if (widget.showMultilingual)
|
|
|
|
DropdownMenuItem(
|
|
|
|
DropdownMenuItem(
|
|
|
|
value: LanguageModel.multiLingual(context),
|
|
|
|
value: LanguageModel.multiLingual(context),
|
|
|
|
|
|
|
|
enabled: widget.enabled,
|
|
|
|
child: LanguageDropDownEntry(
|
|
|
|
child: LanguageDropDownEntry(
|
|
|
|
languageModel: LanguageModel.multiLingual(context),
|
|
|
|
languageModel: LanguageModel.multiLingual(context),
|
|
|
|
isL2List: widget.isL2List,
|
|
|
|
isL2List: widget.isL2List,
|
|
|
|
@ -150,12 +155,13 @@ class PLanguageDropdownState extends State<PLanguageDropdown> {
|
|
|
|
child: LanguageDropDownEntry(
|
|
|
|
child: LanguageDropDownEntry(
|
|
|
|
languageModel: languageModel,
|
|
|
|
languageModel: languageModel,
|
|
|
|
isL2List: widget.isL2List,
|
|
|
|
isL2List: widget.isL2List,
|
|
|
|
|
|
|
|
enabled: widget.enabled,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
],
|
|
|
|
onChanged: (value) => widget.onChange(value!),
|
|
|
|
onChanged: widget.enabled ? (value) => widget.onChange(value!) : null,
|
|
|
|
value: widget.initialLanguage,
|
|
|
|
value: widget.initialLanguage,
|
|
|
|
validator: (value) => widget.validator?.call(value),
|
|
|
|
validator: (value) => widget.validator?.call(value),
|
|
|
|
dropdownSearchData: DropdownSearchData(
|
|
|
|
dropdownSearchData: DropdownSearchData(
|
|
|
|
@ -210,20 +216,25 @@ class LanguageDropDownEntry extends StatelessWidget {
|
|
|
|
final LanguageModel languageModel;
|
|
|
|
final LanguageModel languageModel;
|
|
|
|
final bool isL2List;
|
|
|
|
final bool isL2List;
|
|
|
|
final bool isDropdown;
|
|
|
|
final bool isDropdown;
|
|
|
|
|
|
|
|
final bool enabled;
|
|
|
|
|
|
|
|
|
|
|
|
const LanguageDropDownEntry({
|
|
|
|
const LanguageDropDownEntry({
|
|
|
|
super.key,
|
|
|
|
super.key,
|
|
|
|
required this.languageModel,
|
|
|
|
required this.languageModel,
|
|
|
|
required this.isL2List,
|
|
|
|
required this.isL2List,
|
|
|
|
this.isDropdown = false,
|
|
|
|
this.isDropdown = false,
|
|
|
|
|
|
|
|
this.enabled = true,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Row(
|
|
|
|
return Row(
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
LanguageFlag(
|
|
|
|
Opacity(
|
|
|
|
language: languageModel,
|
|
|
|
opacity: enabled ? 1 : 0.5,
|
|
|
|
|
|
|
|
child: LanguageFlag(
|
|
|
|
|
|
|
|
language: languageModel,
|
|
|
|
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
const SizedBox(width: 10),
|
|
|
|
const SizedBox(width: 10),
|
|
|
|
Expanded(
|
|
|
|
Expanded(
|
|
|
|
@ -232,7 +243,9 @@ class LanguageDropDownEntry extends StatelessWidget {
|
|
|
|
Text(
|
|
|
|
Text(
|
|
|
|
languageModel.getDisplayName(context) ?? "",
|
|
|
|
languageModel.getDisplayName(context) ?? "",
|
|
|
|
style: const TextStyle().copyWith(
|
|
|
|
style: const TextStyle().copyWith(
|
|
|
|
color: Theme.of(context).textTheme.bodyLarge!.color,
|
|
|
|
color: enabled
|
|
|
|
|
|
|
|
? Theme.of(context).textTheme.bodyLarge!.color
|
|
|
|
|
|
|
|
: Theme.of(context).disabledColor,
|
|
|
|
fontSize: 14,
|
|
|
|
fontSize: 14,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
|