顯示的錯誤:NoSuchMethodError:在 null 上呼叫了 getter 'text'。
在 null 上呼叫了 getter '文本。
接收者:空
嘗試呼叫:文本
如何創建從建構式中獲取每個控制器值的 getter?這樣我就可以在 TextFormField 中呼叫它
import 'package:flutter/material.dart';
class CustomTextFieldForm extends StatefulWidget {
final TextEditingController controller;
final String hintText;
final String errorMessage;
const CustomTextFieldForm({
Key? key,
required this.controller,
required this.hintText,
required this.errorMessage,
required Null Function(dynamic text) onChanged,
}) : super(key: key);
@override
_CustomTextFieldFormState createState() => _CustomTextFieldFormState();
}
class _CustomTextFieldFormState extends State<CustomTextFieldForm> {
get controller => null;
get errorMessage => null;
get hintText => null;
@override
Widget build(BuildContext context) {
return TextFormField(
controller: controller,
validator: (String? value) {
if (value!.isEmpty) {
return errorMessage;
}
return null;
},
decoration: InputDecoration(
hintText: hintText,
hintStyle: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.w200,
),
errorStyle: TextStyle(height: 0),
suffixIcon: controller.text.length > 0 ? IconButton(
onPressed: () {
controller.clear();
setState(() {});
},
icon: Icon(Icons.cancel, color: Colors.grey))
: null
),
);
}
}
uj5u.com熱心網友回復:
用于從類到類widget.variable_name
訪問變數。statefulWidget
state
TextEditingController get controller => widget.controller;
String get errorMessage => widget.hintText;
String get hintText => widget.errorMessage;
uj5u.com熱心網友回復:
您正在嘗試從小部件建構式中獲取文本,您將其設定為回傳 type Null
,因此通常它會拋出一個null
.
你需要做什么才能讓它作業:
改變這個:
required Null Function(dynamic text) onChanged,
有了這個
required this.onChanged,
然后用其他變數宣告該onChanged
函式
final TextEditingController controller;
final String hintText;
final String errorMessage;
final Function(dynamic) onChanged;
希望能幫助到你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527183.html
標籤:扑镖
上一篇:將日期時間格式恢復為fu