可见性小部件不会更改 ui |颤动

问题描述 投票:0回答:1

嗨,我有

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))
        ]),
      ],
    );
  }
}


flutter dart boolean visibility
1个回答
0
投票

问题可能是您的小部件没有被重建。要强制重建 StatefulWidget,您可以调用 setState()。

© www.soinside.com 2019 - 2024. All rights reserved.