Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 方法';设置状态';isn';t为类型';pickImage';_Flutter_Dart - Fatal编程技术网

Flutter 方法';设置状态';isn';t为类型';pickImage';

Flutter 方法';设置状态';isn';t为类型';pickImage';,flutter,dart,Flutter,Dart,我正在使用一个有状态的小部件,但在我的setState方法下不断出现红线,出现以下错误: The method 'setState' isn't defined for the type 'pickImage'. 我的颤振版本: Flutter 2.0.4 • channel stable ImagePicker软件包版本: image_picker: ^0.7.4 代码如下: class pickImage extends StatefulWidget { final pic

我正在使用一个有状态的小部件,但在我的setState方法下不断出现红线,出现以下错误:

The method 'setState' isn't defined for the type 'pickImage'.
我的颤振版本:

Flutter 2.0.4 • channel stable 
ImagePicker软件包版本:

  image_picker: ^0.7.4
代码如下:

class pickImage extends StatefulWidget {

  final picker = ImagePicker();

  Future getImage() async {
    final pickedFile = await picker.getImage(source: ImageSource.camera);

    setState(() {  //Keep getting red line here(under setState)
      if (pickedFile != null) {
        _image = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }
  @override
  _pickImageState createState() => _pickImageState();
}

class _pickImageState extends State<pickImage> {
  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      
    );
  }
}
class pickImage扩展StatefulWidget{
最终选择器=图像选择器();
Future getImage()异步{
final pickedFile=wait picker.getImage(来源:ImageSource.camera);
setState((){//在这里(setState下)保持红线
if(pickedFile!=null){
_image=文件(pickedFile.path);
}否则{
打印('未选择图像');
}
});
}
@凌驾
_pickImageState createState()=>\u pickImageState();
}
类_pickImageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回警报对话框(
);
}
}

我在谷歌上搜索了这个问题,但仍然找不到合适的答案,这就是我来这里的原因。

您需要将
getImage
移到
\u pickImageState
内部

setState方法是State类的成员。不是StatefulWidget类


方法()是
状态
类的成员。不是
StatefulWidget

这意味着您可以在从
状态
派生的类中调用它,就像您的
\u pickImageState
一样,但不能在不是的类中调用它。就像你的类
pickImage
,你试图调用你的函数new


您应该能够将整个
getImage
方法移动到
\u pickImageState
类中。

但是为什么不支持它呢?@billalsaeed,因为
setState
是在
State
类中编写的函数。而
\u pickImageState
扩展了
状态
,因此只有此类可以调用
设置状态