当我编译我的应用程序时,错误{LateInitializationError: Field 'contorller‘还没有被初始化},当我用?接线员放!在依赖于变量(如堆栈溢出)的方法建议出现另一个错误之前,{空检查操作符用于空值},那么我如何解决这个问题?
这是一个有地位的阶级
class _MyHomePageState extends State<MyHomePage> {
BarcodeDetector ?labeler;
CameraController? controller;
bool isBusy = false;
String result = "";
File ?_image;
ImagePicker ?imagePicker;
CameraImage ?img;
void initState() {
super.initState();
labeler = FirebaseVision.instance.barcodeDetector();
}
intializeCamera() async {
controller = CameraController(cameras[0], ResolutionPreset.medium);
await controller!.initialize().then((_) {
if (!mounted) {
return;
}
controller!.startImageStream((image) => {
if (!isBusy) {isBusy = true, img = image, doBarcodeScanning()}
});
});
}
void dispose() {
controller!.dispose();
labeler!.close();
super.dispose();
}
Center(
child: Container(
margin: EdgeInsets.only(top: 100),
height: 220,
width: 220,
child: AspectRatio(
aspectRatio: controller!.value.aspectRatio,
child: CameraPreview(controller),
),
),
),发布于 2021-12-07 13:22:23
intializeCamera()是一种未来的方法,我将鼓励您在这种情况下使用FutureBuilder。初始化将来的数据需要一些时间。
第二种情况是controller是可空的,这意味着它可以接收空数据,这很好。CameraController? controller;
但是,在对其使用null检查的同时,还要处理这种情况。
你也可以像这样处理
if (controller != null)
Center(
child: Container(
margin: EdgeInsets.only(top: 100),
height: 220,
width: 220,
child: AspectRatio(
aspectRatio: controller!.value.aspectRatio,
child: CameraPreview(controller),
),
),
),发布于 2021-12-07 13:33:04
在initState()中使用控制器之前先初始化它们,不要将控制器定义为null,而是使用late关键字。
https://stackoverflow.com/questions/70260729
复制相似问题