[英]Hooks can only be called from the build method of a widget that mix-in `Hooks`
我想使用模式,我想使用 MultilineTextField 但是當我使用它時,dart 拋出錯誤。 你知道如何解決這個問題嗎? Hooks can only be called from the build method of a widget that mix-in
.
Future modalWithReason(BuildContext context) {
return showModalBottomSheet(
backgroundColor: Colors.transparent,
isScrollControlled: true,
context: context,
builder: (BuildContext context) {
return GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: Container(
height: 789.sp,
padding: EdgeInsets.symmetric(horizontal: 16.sp),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
),
),
child: Column(
children: [
Container(
height: 264.h,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(height: 34.h),
Text(
'理由を記述',
style: bodySemiBold(black),
),
SizedBox(height: 20.h),
MultilineTextField(),
],
),
),
],
),
),
),
],
),
),
);
});
}
我想用這個。
class MultilineTextField extends HookWidget {
MultilineTextFieldForReason({super.key});
final myController = useTextEditingController();
@override
Widget build(BuildContext context) {
return TextField(
keyboardType: TextInputType.multiline,
controller: myController,
maxLines: 4,
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
width: 1,
color: borderMidEmphasis,
),
)),
);
}
}
class MultilineTextField extends HookWidget {
MultilineTextField({super.key});
@override
Widget build(BuildContext context) {
final myController = useTextEditingController();
return TextField(
keyboardType: TextInputType.multiline,
controller: myController,
maxLines: 4,
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
width: 1,
color: borderMidEmphasis,
),
)),
);
}
}
發生此錯誤是因為您在構建方法之外使用useTextEditingController
掛鈎。 要解決此問題,請在構建方法中放置 controller 掛鈎初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.