mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
@@ -1,4 +1,52 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
/// TODO: Divide every 3 number to display ID
|
||||
class IdFormController extends TextEditingController {}
|
||||
class IDTextEditingController extends TextEditingController {
|
||||
IDTextEditingController({String? text}) : super(text: text);
|
||||
|
||||
String get id => trimID(value.text);
|
||||
|
||||
set id(String newID) => text = formatID(newID);
|
||||
}
|
||||
|
||||
class IDTextInputFormatter extends TextInputFormatter {
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(
|
||||
TextEditingValue oldValue, TextEditingValue newValue) {
|
||||
if (newValue.text.isEmpty) {
|
||||
return newValue.copyWith(text: '');
|
||||
} else if (newValue.text.compareTo(oldValue.text) == 0) {
|
||||
return newValue;
|
||||
} else {
|
||||
int selectionIndexFromTheRight =
|
||||
newValue.text.length - newValue.selection.extentOffset;
|
||||
String newID = formatID(newValue.text);
|
||||
return TextEditingValue(
|
||||
text: newID,
|
||||
selection: TextSelection.collapsed(
|
||||
offset: newID.length - selectionIndexFromTheRight,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String formatID(String id) {
|
||||
String id2 = id.replaceAll(' ', '');
|
||||
String newID = '';
|
||||
if (id2.length <= 3) {
|
||||
newID = id2;
|
||||
} else {
|
||||
var n = id2.length;
|
||||
var a = n % 3 != 0 ? n % 3 : 3;
|
||||
newID = id2.substring(0, a);
|
||||
for (var i = a; i < n; i += 3) {
|
||||
newID += " ${id2.substring(i, i + 3)}";
|
||||
}
|
||||
}
|
||||
return newID;
|
||||
}
|
||||
|
||||
String trimID(String id) {
|
||||
return id.replaceAll(' ', '');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user