首先,我知道这样做不是很可行,但是我有一个问题,我不知道该怎么办。
我想使用DropDown,但它不会更改没有setState的文本,因此我无法将此代码转换为StatefulWidget。我该怎么办?该代码并不重要,但在这里(不是整个代码):

  Widget buildAboutDialog(
      BuildContext context, _myHomePageState, bool isEdit, Clothes clothes){
    if(clothes != null){
      this.clothes = clothes;
      teCategoryName = clothes.category;
      teBrandName.text = clothes.brand;
      teColorName.text = clothes.color;
      teSizeName.text = clothes.size;
      teQtyName.text = clothes.qty;
    }
   return new AlertDialog(
      title: new Text(isEdit ? 'Edit' : 'Add new Clothes'),
      content: new SingleChildScrollView(
        child: new Column(
          mainAxisSize: MainAxisSize.min,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Container(

              child: Center(
                child: DropdownButton(
                  hint:  Text("Choose Category"),
                  value: teCategoryName,
                  isExpanded: true,
                  onChanged: (newValue){
                    teCategoryName = newValue;
                    **setState(() {
                      teCategoryName = newValue;
                    });**

                  },
                  items: _categorynames.map((location){
                    return DropdownMenuItem(
                      child: new Text(location),
                      value: location,
                    );
                  }).toList(),

                ),
              ),
            ),

最佳答案

您不能。
setState方法更新小部件的状态。根据定义,StatelessWidget没有要更新的状态。因此,如果您希望能够调用setState,则需要将小部件转换为StatefulWidget。 (但是,可以很容易地将任何StatelessWidget转换为StatefulWidget。)

10-07 20:51