Commit fbf33fa

derdilla <derdilla06@gmail.com>
2023-05-20 06:16:59
implement InputSettingsTile
1 parent 062900c
Changed files (1)
lib
lib/components/settings_widgets.dart
@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:flutter_material_color_picker/flutter_material_color_picker.dart';
 
 class SettingsTile extends StatelessWidget {
@@ -30,7 +31,6 @@ class SettingsTile extends StatelessWidget {
             lead,
             const SizedBox(width: 15,),
             SizedBox(
-              width: MediaQuery.of(context).size.width - 150,
               child: (() {
               if (description != null) {
                 return Column(
@@ -239,6 +239,53 @@ class _SliderSettingsTileState extends State<SliderSettingsTile> {
   }
 }
 
+class InputSettingsTile extends StatelessWidget {
+  final Widget title;
+  final Widget? leading;
+  final Widget? description;
+  final bool disabled;
+
+  final double inputWidth;
+  final String? initialValue;
+  final InputDecoration? decoration;
+  final String? Function(String?)? validator;
+  final TextInputType? keyboardType;
+  final List<TextInputFormatter>? inputFormatters;
+
+  const InputSettingsTile({super.key, required this.title, required this.inputWidth, this.leading, this.description, this.disabled = false, this.initialValue, this.decoration, this.validator, this.keyboardType, this.inputFormatters});
+
+  @override
+  Widget build(BuildContext context) {
+    final focusNode = FocusNode();
+
+    return SettingsTile(
+      title: title,
+      description: description,
+      onPressed: (context) {
+        focusNode.requestFocus();
+      },
+      trailing: Row(
+        children: [
+          SizedBox(
+            width: inputWidth,
+            child: TextFormField(
+              initialValue: initialValue,
+              decoration: decoration,
+              validator: validator,
+              keyboardType: keyboardType,
+              inputFormatters: inputFormatters,
+              focusNode: focusNode,
+            ),
+          ),
+          const SizedBox(width: 20,),
+        ],
+      ),
+      leading: leading,
+      disabled: disabled,
+    );
+  }
+}
+
 class SettingsSection extends StatelessWidget {
   final Widget title;
   final List<Widget> children;