Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 构建小部件时如何控制null_Flutter_Dart_Getx - Fatal编程技术网

Flutter 构建小部件时如何控制null

Flutter 构建小部件时如何控制null,flutter,dart,getx,Flutter,Dart,Getx,您能告诉我如何在下一页中包含Image.file的条件吗?我只想在controller.image为而非空时构建它 我有一个错误: 生成容器时抛出以下NoSuchMethodError(填充:EdgeInsets.all(32.0)): 对null调用了方法“[]”。 收件人:空 已尝试呼叫: 当我第一次重定向到此页面时(controller.image为空): 你可以用。只需添加if(controller.image!=null)如下: if (controller?.im

您能告诉我如何在下一页中包含Image.file的条件吗?我只想在controller.image为而非空时构建它

我有一个错误: 生成容器时抛出以下NoSuchMethodError(填充:EdgeInsets.all(32.0)): 对null调用了方法“[]”。 收件人:空 已尝试呼叫:

当我第一次重定向到此页面时(controller.image为空):

你可以用。只需添加
if(controller.image!=null)
如下:

          if (controller?.image != null)
          Container(
            padding: EdgeInsets.all(32),
            child:  GetBuilder<HomeController>(
              builder: (_) {
                return Image.file(controller.image);
              },
            ),
          ),
if(控制器?.image!=null)
容器(
填充:边缘设置。全部(32),
孩子:GetBuilder(
建筑商:(){
返回Image.file(controller.Image);
},
),
),

使用控制器的onInit()方法获取参数:

这样,除了
Get.arguments
实际上为空之外,您不需要执行其他空检查

更新 您还需要更新视图,如下所示:

 Container(
        padding: EdgeInsets.all(32),
        child:  GetBuilder<HomeController>(
          builder: (_) {
            return Image.file(_.image); // not return Image.file(controller.image);
                                                // _ here is the instance of HomeController given by the GetBuilder
          },
        ),
      ),

这也可能引发错误<代码>空对象上的空检查。为了安全起见,我添加了条件成员访问。谢谢。这仍然引发了一个异常:在生成主页(dirty)时引发了以下NoSuchMethodError:对null调用了方法“[]”。Receiver:null尝试调用:[”(“图像”)我添加了控制器代码以供参考我确实喜欢遵循您的指导,但仍然收到相同的错误。我不确定您是否理解一个问题,我有两个页面:主页和OCR详细信息-使用主页启动应用程序-转到OCR详细信息页面(显示OCR图像详细信息)-按下OCR详细信息按钮后,我想将OCR图像详细信息返回主页,因此第一次启动应用程序时,我出现空错误,因为get.arguments为空。请检查更新的答案!
          if (controller?.image != null)
          Container(
            padding: EdgeInsets.all(32),
            child:  GetBuilder<HomeController>(
              builder: (_) {
                return Image.file(controller.image);
              },
            ),
          ),
class HomeController extends GetxController {

   final File image;
   final File file_loaded;

   onInit(){
    image = Get.arguments['image'];
    file_loaded = Get.arguments['file_loaded'];
  }

}
 Container(
        padding: EdgeInsets.all(32),
        child:  GetBuilder<HomeController>(
          builder: (_) {
            return Image.file(_.image); // not return Image.file(controller.image);
                                                // _ here is the instance of HomeController given by the GetBuilder
          },
        ),
      ),
class OCRDetailsPage extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      final OCRDetailsController controller = Get.find();
      return Scaffold(
      appBar: AppBar(title: Text('OCR Details Page')),
      body: Center(
        child: FlatButton(
          color: Colors.blue,
          child: Icon(Icons.save_outlined),
          onPressed: () {
            final HomeController homeController = Get.find();
            homeController.ocr_text = controller.text;
            homeController.update();
            Get.toNamed(
              AppRoutes.HOME,
            );
           
          }),
       ),
     );
   }
 }