嗨,我有
myWidget
,我将 focusNode var 从 EditPopUpParent()
类传递给它,当我聚焦时 TextField
focusNode.hasFocus
的值正在变化,我可以通过打印看到它通过 ElevatedButton 出来,但是 Container 没有出现,这是为什么?
import 'package:flutter/material.dart';
import 'package:prakty/providers/edituser.dart';
import 'package:provider/provider.dart';
class EditPopUpParent extends StatefulWidget {
const EditPopUpParent({super.key});
@override
State<EditPopUpParent> createState() => _EditPopUpParentState();
}
class _EditPopUpParentState extends State<EditPopUpParent> {
@override
Widget build(BuildContext context) {
FocusNode focusNode = FocusNode();
List<Widget> editWidgetTypes = [
Container(),
editSkillSet(context, focusNode),
];
return Container(child: editWidgetTypes[1]);
}
Widget editSkillSet(context, FocusNode focusNode) {
var skillBoxes = Provider.of<EditUser>(context).skillBoxes;
final TextEditingController skillCont =
TextEditingController(text: skillBoxes[1].keys.single);
return Column(
children: [
Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Visibility(
visible: focusNode.hasFocus,
child: Container(
width: 100,
height: 100,
color: Colors.red,
child: const Icon(Icons.abc))),
TextField(
controller: skillCont,
textInputAction: TextInputAction.done,
focusNode: focusNode,
decoration:
const InputDecoration.collapsed(hintText: 'Type Something')),
ElevatedButton(
onPressed: () {
print(focusNode.hasFocus);
},
child: const Icon(Icons.check))
]),
],
);
}
}
问题可能是您的小部件没有被重建。要强制重建 StatefulWidget,您可以调用 setState()。