Merge pull request #3706 from grummbeer/unify-dialogs-step-2-input
Unify inputDecoration. All input fields are bordered rectangles with rounded corners
This commit is contained in:
commit
7ee01c7e95
@ -206,10 +206,8 @@ class MyTheme {
|
|||||||
fillColor: grayBg,
|
fillColor: grayBg,
|
||||||
filled: true,
|
filled: true,
|
||||||
isDense: true,
|
isDense: true,
|
||||||
contentPadding: EdgeInsets.all(15),
|
border: OutlineInputBorder(
|
||||||
border: UnderlineInputBorder(
|
borderRadius: BorderRadius.circular(8),
|
||||||
borderRadius: BorderRadius.circular(18),
|
|
||||||
borderSide: BorderSide.none,
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
@ -302,10 +300,8 @@ class MyTheme {
|
|||||||
fillColor: Color(0xFF24252B),
|
fillColor: Color(0xFF24252B),
|
||||||
filled: true,
|
filled: true,
|
||||||
isDense: true,
|
isDense: true,
|
||||||
contentPadding: EdgeInsets.all(15),
|
border: OutlineInputBorder(
|
||||||
border: UnderlineInputBorder(
|
borderRadius: BorderRadius.circular(8),
|
||||||
borderRadius: BorderRadius.circular(18),
|
|
||||||
borderSide: BorderSide.none,
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
|
@ -274,11 +274,7 @@ class _AddressBookState extends State<AddressBook> {
|
|||||||
TextField(
|
TextField(
|
||||||
controller: idController,
|
controller: idController,
|
||||||
inputFormatters: [IDTextInputFormatter()],
|
inputFormatters: [IDTextInputFormatter()],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(errorText: errorMsg),
|
||||||
isDense: true,
|
|
||||||
border: OutlineInputBorder(),
|
|
||||||
errorText: errorMsg),
|
|
||||||
style: style,
|
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
@ -289,11 +285,6 @@ class _AddressBookState extends State<AddressBook> {
|
|||||||
).marginOnly(top: 8, bottom: 2),
|
).marginOnly(top: 8, bottom: 2),
|
||||||
TextField(
|
TextField(
|
||||||
controller: aliasController,
|
controller: aliasController,
|
||||||
decoration: InputDecoration(
|
|
||||||
border: OutlineInputBorder(),
|
|
||||||
isDense: true,
|
|
||||||
),
|
|
||||||
style: style,
|
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
@ -379,7 +370,6 @@ class _AddressBookState extends State<AddressBook> {
|
|||||||
child: TextField(
|
child: TextField(
|
||||||
maxLines: null,
|
maxLines: null,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: const OutlineInputBorder(),
|
|
||||||
errorText: msg.isEmpty ? null : translate(msg),
|
errorText: msg.isEmpty ? null : translate(msg),
|
||||||
),
|
),
|
||||||
controller: controller,
|
controller: controller,
|
||||||
|
@ -106,7 +106,6 @@ void changeIdDialog() {
|
|||||||
TextField(
|
TextField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: translate('Your new ID'),
|
labelText: translate('Your new ID'),
|
||||||
border: isDesktop ? const OutlineInputBorder() : null,
|
|
||||||
errorText: msg.isEmpty ? null : translate(msg),
|
errorText: msg.isEmpty ? null : translate(msg),
|
||||||
suffixText: '${rxId.value.length}/16',
|
suffixText: '${rxId.value.length}/16',
|
||||||
suffixStyle: const TextStyle(fontSize: 12, color: Colors.grey)),
|
suffixStyle: const TextStyle(fontSize: 12, color: Colors.grey)),
|
||||||
@ -182,7 +181,6 @@ void changeWhiteList({Function()? callback}) async {
|
|||||||
child: TextField(
|
child: TextField(
|
||||||
maxLines: null,
|
maxLines: null,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: isDesktop ? const OutlineInputBorder() : null,
|
|
||||||
errorText: msg.isEmpty ? null : translate(msg),
|
errorText: msg.isEmpty ? null : translate(msg),
|
||||||
),
|
),
|
||||||
controller: controller,
|
controller: controller,
|
||||||
|
@ -405,7 +405,6 @@ class DialogTextField extends StatelessWidget {
|
|||||||
child: TextField(
|
child: TextField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: title,
|
labelText: title,
|
||||||
border: const OutlineInputBorder(),
|
|
||||||
prefixIcon: prefixIcon,
|
prefixIcon: prefixIcon,
|
||||||
helperText: helperText,
|
helperText: helperText,
|
||||||
helperMaxLines: 8,
|
helperMaxLines: 8,
|
||||||
@ -635,9 +634,7 @@ Future<bool?> verificationCodeDialog(UserPayload? user) async {
|
|||||||
offstage: user?.email == null,
|
offstage: user?.email == null,
|
||||||
child: TextField(
|
child: TextField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: "Email",
|
labelText: "Email", prefixIcon: Icon(Icons.email)),
|
||||||
prefixIcon: Icon(Icons.email),
|
|
||||||
border: InputBorder.none),
|
|
||||||
readOnly: true,
|
readOnly: true,
|
||||||
controller: TextEditingController(text: user?.email),
|
controller: TextEditingController(text: user?.email),
|
||||||
)),
|
)),
|
||||||
|
@ -1157,7 +1157,6 @@ void _rdpDialog(String id) async {
|
|||||||
],
|
],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: isDesktop ? null : translate('Port'),
|
labelText: isDesktop ? null : translate('Port'),
|
||||||
border: isDesktop ? const OutlineInputBorder() : null,
|
|
||||||
hintText: '3389'),
|
hintText: '3389'),
|
||||||
controller: portController,
|
controller: portController,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
@ -1178,8 +1177,7 @@ void _rdpDialog(String id) async {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: TextField(
|
child: TextField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: isDesktop ? null : translate('Username'),
|
labelText: isDesktop ? null : translate('Username')),
|
||||||
border: isDesktop ? const OutlineInputBorder() : null),
|
|
||||||
controller: userController,
|
controller: userController,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1200,8 +1198,6 @@ void _rdpDialog(String id) async {
|
|||||||
obscureText: secure.value,
|
obscureText: secure.value,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: isDesktop ? null : translate('Password'),
|
labelText: isDesktop ? null : translate('Password'),
|
||||||
border:
|
|
||||||
isDesktop ? const OutlineInputBorder() : null,
|
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
onPressed: () => secure.value = !secure.value,
|
onPressed: () => secure.value = !secure.value,
|
||||||
icon: Icon(secure.value
|
icon: Icon(secure.value
|
||||||
|
@ -193,7 +193,7 @@ class _ConnectionPageState extends State<ConnectionPage>
|
|||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontFamily: 'WorkSans',
|
fontFamily: 'WorkSans',
|
||||||
fontSize: 22,
|
fontSize: 22,
|
||||||
height: 1.25,
|
height: 1.4,
|
||||||
),
|
),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
cursorColor:
|
cursorColor:
|
||||||
@ -204,22 +204,8 @@ class _ConnectionPageState extends State<ConnectionPage>
|
|||||||
hintText: _idInputFocused.value
|
hintText: _idInputFocused.value
|
||||||
? null
|
? null
|
||||||
: translate('Enter Remote ID'),
|
: translate('Enter Remote ID'),
|
||||||
border: OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.zero,
|
|
||||||
borderSide: BorderSide(
|
|
||||||
color: MyTheme.color(context).border!)),
|
|
||||||
enabledBorder: OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.zero,
|
|
||||||
borderSide: BorderSide(
|
|
||||||
color: MyTheme.color(context).border!)),
|
|
||||||
focusedBorder: const OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.zero,
|
|
||||||
borderSide:
|
|
||||||
BorderSide(color: MyTheme.button, width: 3),
|
|
||||||
),
|
|
||||||
isDense: true,
|
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
horizontal: 10, vertical: 12)),
|
horizontal: 15, vertical: 13)),
|
||||||
controller: _idController,
|
controller: _idController,
|
||||||
inputFormatters: [IDTextInputFormatter()],
|
inputFormatters: [IDTextInputFormatter()],
|
||||||
onSubmitted: (s) {
|
onSubmitted: (s) {
|
||||||
|
@ -634,7 +634,6 @@ void setPasswordDialog() async {
|
|||||||
obscureText: true,
|
obscureText: true,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: translate('Password'),
|
labelText: translate('Password'),
|
||||||
border: const OutlineInputBorder(),
|
|
||||||
errorText: errMsg0.isNotEmpty ? errMsg0 : null),
|
errorText: errMsg0.isNotEmpty ? errMsg0 : null),
|
||||||
controller: p0,
|
controller: p0,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
@ -662,7 +661,6 @@ void setPasswordDialog() async {
|
|||||||
child: TextField(
|
child: TextField(
|
||||||
obscureText: true,
|
obscureText: true,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: const OutlineInputBorder(),
|
|
||||||
labelText: translate('Confirmation'),
|
labelText: translate('Confirmation'),
|
||||||
errorText: errMsg1.isNotEmpty ? errMsg1 : null),
|
errorText: errMsg1.isNotEmpty ? errMsg1 : null),
|
||||||
controller: p1,
|
controller: p1,
|
||||||
|
@ -769,7 +769,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
|||||||
'Port',
|
'Port',
|
||||||
Row(children: [
|
Row(children: [
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 80,
|
width: 95,
|
||||||
child: TextField(
|
child: TextField(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
enabled: enabled && !locked,
|
enabled: enabled && !locked,
|
||||||
@ -778,13 +778,10 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
|||||||
FilteringTextInputFormatter.allow(RegExp(
|
FilteringTextInputFormatter.allow(RegExp(
|
||||||
r'^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$')),
|
r'^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$')),
|
||||||
],
|
],
|
||||||
textAlign: TextAlign.end,
|
|
||||||
decoration: const InputDecoration(
|
decoration: const InputDecoration(
|
||||||
hintText: '21118',
|
hintText: '21118',
|
||||||
border: OutlineInputBorder(),
|
|
||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsets.only(bottom: 10, top: 10, right: 10),
|
EdgeInsets.symmetric(vertical: 12, horizontal: 12),
|
||||||
isCollapsed: true,
|
|
||||||
),
|
),
|
||||||
).marginOnly(right: 15),
|
).marginOnly(right: 15),
|
||||||
),
|
),
|
||||||
@ -1704,9 +1701,6 @@ _LabeledTextField(
|
|||||||
enabled: enabled,
|
enabled: enabled,
|
||||||
obscureText: secure,
|
obscureText: secure,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
isDense: true,
|
|
||||||
border: OutlineInputBorder(),
|
|
||||||
contentPadding: EdgeInsets.fromLTRB(14, 15, 14, 15),
|
|
||||||
errorText: errorText.isNotEmpty ? errorText : null),
|
errorText: errorText.isNotEmpty ? errorText : null),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: _disabledTextColor(context, enabled),
|
color: _disabledTextColor(context, enabled),
|
||||||
@ -1748,15 +1742,16 @@ class _ComboBox extends StatelessWidget {
|
|||||||
color: enabled
|
color: enabled
|
||||||
? MyTheme.color(context).border2 ?? MyTheme.border
|
? MyTheme.color(context).border2 ?? MyTheme.border
|
||||||
: MyTheme.border,
|
: MyTheme.border,
|
||||||
)),
|
),
|
||||||
height: 30,
|
borderRadius:
|
||||||
|
BorderRadius.circular(8), //border raiuds of dropdown button
|
||||||
|
),
|
||||||
|
height: 42, // should be the height of a TextField
|
||||||
child: Obx(() => DropdownButton<String>(
|
child: Obx(() => DropdownButton<String>(
|
||||||
isExpanded: true,
|
isExpanded: true,
|
||||||
value: ref.value,
|
value: ref.value,
|
||||||
elevation: 16,
|
elevation: 16,
|
||||||
underline: Container(
|
underline: Container(),
|
||||||
height: 25,
|
|
||||||
),
|
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: enabled
|
color: enabled
|
||||||
? Theme.of(context).textTheme.titleMedium?.color
|
? Theme.of(context).textTheme.titleMedium?.color
|
||||||
@ -1764,7 +1759,7 @@ class _ComboBox extends StatelessWidget {
|
|||||||
icon: const Icon(
|
icon: const Icon(
|
||||||
Icons.expand_more_sharp,
|
Icons.expand_more_sharp,
|
||||||
size: 20,
|
size: 20,
|
||||||
),
|
).marginOnly(right: 15),
|
||||||
onChanged: enabled
|
onChanged: enabled
|
||||||
? (String? newValue) {
|
? (String? newValue) {
|
||||||
if (newValue != null && newValue != ref.value) {
|
if (newValue != null && newValue != ref.value) {
|
||||||
@ -1781,11 +1776,11 @@ class _ComboBox extends StatelessWidget {
|
|||||||
value,
|
value,
|
||||||
style: const TextStyle(fontSize: _kContentFontSize),
|
style: const TextStyle(fontSize: _kContentFontSize),
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
).marginOnly(left: 5),
|
).marginOnly(left: 15),
|
||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
)),
|
)),
|
||||||
);
|
).marginOnly(bottom: 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1862,7 +1857,6 @@ void changeSocks5Proxy() async {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: TextField(
|
child: TextField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: const OutlineInputBorder(),
|
|
||||||
errorText: proxyMsg.isNotEmpty ? proxyMsg : null),
|
errorText: proxyMsg.isNotEmpty ? proxyMsg : null),
|
||||||
controller: proxyController,
|
controller: proxyController,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
@ -1880,9 +1874,6 @@ void changeSocks5Proxy() async {
|
|||||||
).marginOnly(right: 10)),
|
).marginOnly(right: 10)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: TextField(
|
child: TextField(
|
||||||
decoration: const InputDecoration(
|
|
||||||
border: OutlineInputBorder(),
|
|
||||||
),
|
|
||||||
controller: userController,
|
controller: userController,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1900,7 +1891,6 @@ void changeSocks5Proxy() async {
|
|||||||
child: Obx(() => TextField(
|
child: Obx(() => TextField(
|
||||||
obscureText: obscure.value,
|
obscureText: obscure.value,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: const OutlineInputBorder(),
|
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
onPressed: () => obscure.value = !obscure.value,
|
onPressed: () => obscure.value = !obscure.value,
|
||||||
icon: Icon(obscure.value
|
icon: Icon(obscure.value
|
||||||
|
@ -11,7 +11,7 @@ import 'package:wakelock/wakelock.dart';
|
|||||||
|
|
||||||
const double _kColumn1Width = 30;
|
const double _kColumn1Width = 30;
|
||||||
const double _kColumn4Width = 100;
|
const double _kColumn4Width = 100;
|
||||||
const double _kRowHeight = 50;
|
const double _kRowHeight = 60;
|
||||||
const double _kTextLeftMargin = 20;
|
const double _kTextLeftMargin = 20;
|
||||||
|
|
||||||
class _PortForward {
|
class _PortForward {
|
||||||
@ -183,8 +183,6 @@ class _PortForwardPageState extends State<PortForwardPage>
|
|||||||
controller: remotePortController,
|
controller: remotePortController,
|
||||||
inputFormatters: portInputFormatter),
|
inputFormatters: portInputFormatter),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
elevation: 0, side: const BorderSide(color: MyTheme.border)),
|
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
int? localPort = int.tryParse(localPortController.text);
|
int? localPort = int.tryParse(localPortController.text);
|
||||||
int? remotePort = int.tryParse(remotePortController.text);
|
int? remotePort = int.tryParse(remotePortController.text);
|
||||||
@ -208,7 +206,7 @@ class _PortForwardPageState extends State<PortForwardPage>
|
|||||||
child: Text(
|
child: Text(
|
||||||
translate('Add'),
|
translate('Add'),
|
||||||
),
|
),
|
||||||
).marginAll(10),
|
).marginSymmetric(horizontal: 10),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -217,26 +215,15 @@ class _PortForwardPageState extends State<PortForwardPage>
|
|||||||
{required TextEditingController controller,
|
{required TextEditingController controller,
|
||||||
List<TextInputFormatter>? inputFormatters,
|
List<TextInputFormatter>? inputFormatters,
|
||||||
String? hint}) {
|
String? hint}) {
|
||||||
final textColor = Theme.of(context).textTheme.titleLarge?.color;
|
|
||||||
return Expanded(
|
return Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
child: TextField(
|
child: TextField(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
inputFormatters: inputFormatters,
|
inputFormatters: inputFormatters,
|
||||||
cursorColor: textColor,
|
|
||||||
cursorHeight: 20,
|
|
||||||
cursorWidth: 1,
|
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: OutlineInputBorder(
|
|
||||||
borderSide: BorderSide(color: MyTheme.color(context).border!)),
|
|
||||||
focusedBorder: OutlineInputBorder(
|
|
||||||
borderSide: BorderSide(color: MyTheme.color(context).border!)),
|
|
||||||
fillColor: Theme.of(context).colorScheme.background,
|
|
||||||
contentPadding: const EdgeInsets.all(10),
|
|
||||||
hintText: hint,
|
hintText: hint,
|
||||||
hintStyle:
|
))),
|
||||||
TextStyle(color: Theme.of(context).hintColor, fontSize: 16)),
|
|
||||||
style: TextStyle(color: textColor, fontSize: 16),
|
|
||||||
).marginAll(10),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,14 +309,9 @@ class _PortForwardPageState extends State<PortForwardPage>
|
|||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: 120,
|
width: 120,
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
elevation: 0,
|
|
||||||
side: const BorderSide(color: MyTheme.border)),
|
|
||||||
onPressed: () => bind.sessionNewRdp(id: widget.id),
|
onPressed: () => bind.sessionNewRdp(id: widget.id),
|
||||||
child: Text(
|
child: Text(
|
||||||
translate('New RDP'),
|
translate('New RDP'),
|
||||||
style: const TextStyle(
|
|
||||||
fontWeight: FontWeight.w300, fontSize: 14),
|
|
||||||
),
|
),
|
||||||
).marginSymmetric(vertical: 10),
|
).marginSymmetric(vertical: 10),
|
||||||
).marginOnly(left: 20),
|
).marginOnly(left: 20),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user