我正在学习 GetX。我正在尝试编写显示文本字段并允许对其进行编辑的简单应用程序。所以用户可以点击默认文本并继续编辑它。
但我对onChange
动作和控制器感到困惑。我不确定我是否正确使用它们,因为下一个代码不会在控制台中打印注释,所以它似乎TextEditingController
没有与数据绑定。
这里复制过去的代码:
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();
}
))
));
}
}
控制器:
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!
}
}
还有第二个问题。如果我需要两个文本字段,我需要如何组织代码?我需要不同的_controller.addListener(changeText);
喜欢:_controller.addListener(changeText1); _controller.addListener(changeText2);
?