无法推断类型参数“T”

Pra*_*rer 5 dart flutter

无法推断类型参数“T”。

试图推断“T”的“动态”,但这不起作用:

参数“onChanged”声明为“void Function(T?)?” 但参数是“void Function(Object?)”。

类型“动态”是从以下内容推断出来的:

参数“值”声明为“T?” 但参数是“字符串”。参数“items”声明为“List<DropdownMenuItem>?” 但参数是“List<DropdownMenuItem>”。

考虑将显式类型参数传递给泛型。

我有 DropDownformfield 显示上述问题代码是

SizedBox(
                    width: deviceWidth * .9,
                    height: deviceHeight * 0.15,
                    child: DropdownButtonFormField(
                      value: _dropDownValue,
                      dropdownColor: Colors.blueAccent,
                      iconSize: deviceWidth * .05,
                      icon: Icon(
                        Icons.arrow_drop_down_circle,
                        color: Colors.white,
                      ),
                      style: TextStyle(
                        color: Colors.black,
                        fontFamily: 'Constantia',
                        fontSize: 18.0,
                      ),
                      autovalidateMode: AutovalidateMode.always,
                      decoration: InputDecoration(
                        enabled: true,
                        border: OutlineInputBorder(
                          borderSide: BorderSide(
                            color: Colors.red,
                            width: 2,
                            style: BorderStyle.solid,
                          ),
                        ),
                      ),
                      onChanged: (value) {
                        setState(() {
                          _dropDownValue = value.toString();
                          print(_dropDownValue);
                        });
                      },
                      items: <DropdownMenuItem<dynamic>>[
                        menuItem('none'),
                        menuItem('10'),
                        menuItem('20'),
                        menuItem('30'),
                        menuItem('40'),
                        menuItem('50'),
                        menuItem('60'),
                        menuItem('70'),
                        menuItem('80'),
                        menuItem('90'),
                        menuItem('100'),
                      ],
                    ),
                  ),
Run Code Online (Sandbox Code Playgroud)

和小部件作为

DropdownMenuItem menuItem(String val) {
    final deviceWidth = MediaQuery.of(context).size.width;
    return DropdownMenuItem<String>(
      value: val,
      child: Container(
        width: deviceWidth * 0.6,
        child: Text(
          val,
          style: TextStyle(
            fontFamily: 'Constantia',
            fontSize: 18.0,
            color: Colors.white,
          ),
        ),
      ),
    );
Run Code Online (Sandbox Code Playgroud)

该代码工作正常,但 Android Studio 将其显示为问题。

Ash*_*ole 0

最好提供泛型类型以避免代码中出现任何错误或错误。因为您在函数中提到了 DropDownMenuItem,所以menuItemandroid studio 会向您发出警告,表明您已在此处提供了动态。

items: <DropdownMenuItem<dynamic>>[      // ==> change dynamic to String to solve that warning
                        menuItem('none'),
                        menuItem('10'),
                        menuItem('20'),
                        menuItem('30'),
                        menuItem('40'),
                        menuItem('50'),
                        menuItem('60'),
                        menuItem('70'),
                        menuItem('80'),
                        menuItem('90'),
                        menuItem('100'),
                      ],

Run Code Online (Sandbox Code Playgroud)