import 'package:flutter/material.dart';
import 'package:camera/camera.dart';
class Register extends StatefulWidget{
List<CameraDescription> cameras;
@override
_Register createState() {
return _Register();
}
Register(this.cameras);
}
class _Register extends State<Register>{
CameraController controller;
@override
Widget build(BuildContext context){
return MaterialApp(
title: 'Registration Certificate',
home: Scaffold(
appBar: AppBar(
title: new Text('Register'),
),
body: Container()
),
);
}
@override
void initState(){
super.initState();
controller = new CameraController(widget.cameras[0], ResolutionPreset.medium);
//**SYNTAX ERROR from the below code**
controller.initialize().then(() {});
}
}
Run Code Online (Sandbox Code Playgroud)
错误详情
错误:参数类型 '() ? Null' 不能分配给参数类型 '(Null) ?未来或'。(argument_type_not_assignable 在 [fluttercam] lib\packs\reg.certificate.dart:38)
当我使用“_”下划线时,代码工作正常,错误已解决!
controller.initialize().then((_) {});
Run Code Online (Sandbox Code Playgroud)
谁能解释一下幕后发生了什么?
Gün*_*uer 11
当需要一个带参数的函数时,
(Null) ? FutureOr<dynamic>
Run Code Online (Sandbox Code Playgroud)
你不能传递一个不接受任何函数的函数
() ? Null
Run Code Online (Sandbox Code Playgroud)
_ 是一个有效的参数名称,按照惯例用于指示未使用该参数并使传递的函数与定义的参数类型兼容,因为它现在接受一个参数。
controller.initialize()返回 aFuture并且该then(...)方法期望在异步任务完成时调用一个函数,并将完成的异步任务的结果作为参数传递给该回调函数。
https://api.dartlang.org/stable/2.1.0/dart-async/Future/then.html显示了以下参数定义then:
FutureOr<R> onValue(T value)
Run Code Online (Sandbox Code Playgroud)
这是一个接受泛型类型参数T并返回值的函数FutureOr<R>
| 归档时间: |
|
| 查看次数: |
19111 次 |
| 最近记录: |