prasule/lib/pw/platformfield.dart

91 lines
2.5 KiB
Dart
Raw Normal View History

2024-06-30 20:25:36 +02:00
// SPDX-FileCopyrightText: (C) 2024 Matyáš Caras
//
// SPDX-License-Identifier: AGPL-3.0-only
// ignore_for_file: public_member_api_docs
2023-09-08 11:50:21 +02:00
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:prasule/pw/platformwidget.dart';
/// A [PlatformWidget] implementation of a text field
2023-09-08 11:50:21 +02:00
class PlatformField extends PlatformWidget<TextField, CupertinoTextField> {
const PlatformField({
super.key,
this.controller,
this.enabled,
this.labelText,
this.obscureText = false,
this.autocorrect = false,
this.keyboardType,
this.inputFormatters = const [],
this.onChanged,
this.autofillHints,
this.textStyle,
this.textAlign = TextAlign.start,
this.maxLines = 1,
2024-01-22 19:20:41 +01:00
this.focusNode,
this.inputBorder = const OutlineInputBorder(),
this.suffix,
this.prefix,
});
2023-09-08 11:50:21 +02:00
final TextEditingController? controller;
final bool? enabled;
final bool obscureText;
final String? labelText;
final bool autocorrect;
final TextInputType? keyboardType;
final List<TextInputFormatter> inputFormatters;
final void Function(String)? onChanged;
final List<String>? autofillHints;
final TextStyle? textStyle;
final TextAlign textAlign;
final int? maxLines;
2024-01-22 19:20:41 +01:00
final InputBorder inputBorder;
final FocusNode? focusNode;
final Widget? suffix;
final Widget? prefix;
2023-09-08 11:50:21 +02:00
@override
TextField createAndroidWidget(BuildContext context) => TextField(
textAlign: textAlign,
controller: controller,
enabled: enabled,
obscureText: obscureText,
decoration: InputDecoration(
labelText: labelText,
2024-01-22 19:20:41 +01:00
border: inputBorder,
suffix: suffix,
prefix: prefix,
),
2023-09-08 11:50:21 +02:00
autocorrect: autocorrect,
keyboardType: keyboardType,
2024-01-22 19:20:41 +01:00
focusNode: focusNode,
2023-09-08 11:50:21 +02:00
style: textStyle,
inputFormatters: inputFormatters,
onChanged: onChanged,
autofillHints: autofillHints,
maxLines: maxLines,
2023-09-08 11:50:21 +02:00
);
@override
CupertinoTextField createIosWidget(BuildContext context) =>
CupertinoTextField(
textAlign: textAlign,
controller: controller,
enabled: enabled ?? true,
2023-09-08 11:50:21 +02:00
obscureText: obscureText,
placeholder: labelText,
2023-09-08 11:50:21 +02:00
autocorrect: autocorrect,
keyboardType: keyboardType,
inputFormatters: inputFormatters,
onChanged: onChanged,
2024-01-22 19:20:41 +01:00
focusNode: focusNode,
maxLines: maxLines,
2023-09-08 11:50:21 +02:00
style: textStyle,
prefix: prefix,
suffix: suffix,
2023-09-08 11:50:21 +02:00
);
}