I making calculator
for calculator i want 4321 to 4,321 => after 3 numbers it must to put ‘,’
this is the text form fild part i think its bether to skip this part to therd part in cods (go to ///////// part )
Container(
alignment: Alignment.centerRight,
child: TextFormField(
textAlign: TextAlign.end,
readOnly: true,
cursorColor: Colors.grey[700],
controller: controller,
keyboardType: TextInputType.none,
decoration: const InputDecoration(
hintText: '0',
hintStyle: TextStyle(color: Colors.white, fontSize: 45),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(
width: 0,
color: Colors.transparent,
),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
width: 0,
color: Colors.transparent,
),
),
),
style: const TextStyle(color: Colors.white, fontSize: 43),
),
),
I made class to bild elevator button :
class ElebatedButtonMaker extends StatelessWidget {
ElebatedButtonMaker({
Key? key,
required this.color,
required this.height,
required this.width,
this.widget,
required this.text,
this.onPressed,
}) : super(key: key);
final String text;
final Color color;
final double width;
final double height;
void Function()? onPressed;
Widget? widget;
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed ?? () {},
style: ElevatedButton.styleFrom(
backgroundColor: color,
elevation: 0,
fixedSize: Size(MediaQuery.of(context).size.width * width,
MediaQuery.of(context).size.width * height)),
child: text.isNotEmpty
? Text(
text,
style: const TextStyle(
fontSize: 25,
),
)
: widget);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
I didnt see eny problems here and it
Im calling this class for putting it in the onpressed part
class Passclass {
const Passclass({
this.pakonebord,
this.resetbord,
this.textstring,
this.textdouble,
required this.controller,
});
final bool? resetbord;
final bool? pakonebord;
final String? textstring;
final TextEditingController controller;
final int? textdouble;
final String alamat = ',';
passer() {
if (textdouble != null) {
if (textdouble == 0) {
return controller.text = '0';
}
return controller.text = controller.text + textdouble.toString();
}
if (!(controller.text.contains('.'))) {
return controller.text = controller.text + textstring!;
}
if (controller.text.length > 3) {
return controller.text = controller.text.substring(0, 1) +
alamat +
controller.text.substring(1);
}
// *********BUG*************** this if must to do take 3 numbelrs and put ',' inside them
}
reset() {
if (resetbord == true) {
return controller.text = '0';
}
}
pakon() {
if (controller.text.isNotEmpty) {
if (pakonebord == true) {
return controller.text =
controller.text.substring(0, controller.text.length - 1);
}
}
}
}
i dont have eny errors but it didnt do all the if’s was do ing well but thisone i dont know pleas help me
i tryed alot bot i didnt sucsessful i did smplis it for myself do ing :
void main() {
String text = '4321';
if (text.length > 3) {
print('${text.substring(0, 1)},${text.substring(1)}');
}
}
i did work well but in the project i dont know what is the main problem of it
2
Answers
Instead of all this code, you could use intl package to do this for you: