I am learning GetX. I am trying to write simple app that display text field and allow to edit it. So user can click on default text and continue to editing it.
But I am confused with onChange
actions and controllers. I am not sure that I am using them properly because next code do not printing noting in console, so it's seems that TextEditingController
did not bind with data.
Here copy-past code:
import 'package:flutter/material.dart';
import 'package:flutter_application_1/controller.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:get/get.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
var mycontroller = Get.put(MyController());
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
body: Container(child: TextField(
controller: TextEditingController(text: mycontroller.text),
onChanged: (value) {
mycontroller.changeText();
}
))
));
}
}
controller:
import 'package:flutter/material.dart';
import 'package:get/get_state_manager/get_state_manager.dart';
import 'package:get/get_rx/src/rx_types/rx_types.dart';
class MyController extends GetxController {
var _text = "".obs;
TextEditingController _controller;
get text => this._text.value;
set text(value) => this._text.value = value;
@override
void onInit() async {
super.onInit();
_controller = TextEditingController();
_text.value = "Hello World";
_controller.addListener(changeText);
}
changeText() {
_text.value = _controller.text;
print(_text.value); // nothing is printed on Console!
}
}
And the second question. If I need two text fields how I need to organize code? Do I need to different _controller.addListener(changeText);
like: _controller.addListener(changeText1); _controller.addListener(changeText2);
?