如何解决如何在 GetxController 中将 Get.arguments 处理为 null
我有以下 GetX 控制器将参数传递给 Flutter 中的页面:
更新
class HomeController extends GetxController {
File image;
String ocr_text;
onInit(){
super.onInit();
image = Get.arguments['image'];
ocr_text = Get.arguments['ocr_text'];
update();
}
}
绑定:
class HomeBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<HomeController>(() => HomeController());
}
}
我想从 Ocr_details 页面传递图片:
FlatButton(
color: Colors.blue,child: Icon(Icons.save_outlined),onPressed: () {
Get.toNamed(
AppRoutes.HOME,arguments: {'image': controller.image,'ocr_text': controller.text},);
}
),
到主页:
更新:
Container(
padding: EdgeInsets.all(32),child: GetBuilder<HomeController>(
builder: (_) {
return _.image != null
? Image.file(_.image)
: Container();
},),
获取页面
class AppPages {
static var list = [
GetPage(
name: AppRoutes.HOME,page: () => HomePage(),binding: HomeBinding(),GetPage(
name: AppRoutes.PICK_IMAGE,page: () => PickImagePage(),binding: PickImageBinding(),GetPage(
name: AppRoutes.OCR_DETAILS,page: () => OCRDetailsPage(),binding: OCRDetailsBinding(),)
];
}
路线
class AppRoutes {
static const String HOME = '/';
static const String PICK_IMAGE = '/pick_image';
static const String OCR_DETAILS = '/ocr_details';
}
但我收到以下错误: 在构建 HomePage(dirty) 时抛出了以下 NoSuchMethodError: 方法 '[]' 在 null 上被调用。 接收器:空 尝试调用:
我不知道是否有办法检查参数是否为空并继续呈现小部件?
解决方法
在您想接收的页面上,
final args = Get.arguments;
class HomeController extends GetxController {
final args = Get.arguments;
}
Container(
padding: EdgeInsets.all(32),child: GetBuilder<HomeController>(
builder: (_) {
return args.image != null
? Image.file(args.image)
: Container();
},),],
然后在你需要的时候
args.image
或 args.ocr_text
取而代之的是:
class HomeController extends GetxController {
final File image = Get.arguments['image'];
final String ocr_text = Get.arguments['ocr_text'];
}
使用这个:
class HomeController extends GetxController {
File image;
String ocr_text;
onInit(){
super.onInit();
image = Get.arguments['image'];
ocr_text = Get.arguments['ocr_text'];
update();
}
}
更新
我可以看到您正在使用 controller.image
。您需要在 GetBuilder
controller.image
而不是 _.image
更新 2
在尝试获取参数和分配之前,只需检查 Get.arguments
是否不是 null。
class HomeController extends GetxController {
File image;
String ocr_text;
onInit(){
super.onInit();
if(Get.arguments != null){
image = Get.arguments['image'];
ocr_text = Get.arguments['ocr_text'];
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。