首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤振: UnimplementedError,我不明白为什么我会犯这个错误

颤振: UnimplementedError,我不明白为什么我会犯这个错误
EN

Stack Overflow用户
提问于 2022-04-03 20:47:15
回答 3查看 741关注 0票数 2

我真的是新学的代码颤振应用程序(Dart),我正在遵循一个基本的过程,以建立一个简单的用户界面一步一步。一切都很好,直到我需要创建一个图像滑块(在定制的appBar中),并且当我创建一个返回一个appBar变量(每个图像的容器)的CardImage类时,Android建议在类中插入一个抛出UnimplementedError(),最后我运行了我的应用程序,它崩溃了,显示了控制台日志中捕获的一个异常。

做了一些谷歌搜索之后,我试图解决这个问题,我不明白为什么当我在throw UnimplementedError()类中注释CardImage时错误消失了,为什么Android建议插入这段代码?有没有更好的解决办法?我会感谢你的帮助。

App误差

我的班级:

代码语言:javascript
复制
import 'package:flutter/material.dart';

class CardImage extends StatelessWidget {
  final String imagePath;

  CardImage(this.imagePath, {Key? key}) : super(key: key) {
    // TODO: implement
    throw UnimplementedError();
  }

  @override
  Widget build(BuildContext context) {
    final card = Container(
      height: 350.0,
      width: 250.0,
      margin: const EdgeInsets.only(
        top: 80.0,
        left: 20.0
      ),
      decoration: BoxDecoration(
        image: DecorationImage(
          fit: BoxFit.cover,
          image: AssetImage(imagePath)
        ),
        borderRadius: const BorderRadius.all(Radius.circular(10.0)),
        shape: BoxShape.rectangle,
        boxShadow: const <BoxShadow>[
          BoxShadow(
            color: Colors.black38,
            // Nivel de degradado
            blurRadius: 15.0,
            // Posición de la sombra (x, y)
            offset: Offset(0.0, 7.0)

          )
        ]
      ),
    );

    return card;
  }
}

控制台日志:

代码语言:javascript
复制
Launching lib\main.dart on sdk gphone x86 in debug mode...
Running Gradle task 'assembleDebug'...
√  Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
Debug service listening on ws://127.0.0.1:63533/KSRdMP8cgi0=/ws
Syncing files to device sdk gphone x86...

======== Exception caught by widgets library =======================================================
The following UnimplementedError was thrown building CardImageList(dirty):
UnimplementedError

The relevant error-causing widget was: 
  CardImageList CardImageList:file:///C:/Users/joh4n4lex4nder/Documents/Platzi/Cursos/Flutter/Avanzado/lib/header_app.dart:13:15
When the exception was thrown, this was the stack: 
#0      new CardImage (package:trip_app/card_image.dart:8:5)
#1      CardImageList.build (package:trip_app/card_image_list.dart:18:11)
#2      StatelessElement.build (package:flutter/src/widgets/framework.dart:4827:28)
#3      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4754:15)
#4      Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#5      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735:5)
#6      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729:5)
#7      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790:14)
#8      MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6422:36)
#9      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6433:32)
...     Normal element mounting (7 frames)
#16     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790:14)
#17     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6422:36)
#18     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6433:32)
...     Normal element mounting (19 frames)
#37     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790:14)
#38     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6422:36)
#39     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6433:32)
...     Normal element mounting (255 frames)
#294    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790:14)
#295    MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6422:36)
#296    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6433:32)
...     Normal element mounting (377 frames)
#673    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790:14)
#674    Element.updateChild (package:flutter/src/widgets/framework.dart:3540:18)
#675    RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1198:16)
#676    RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1167:5)
#677    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1112:18)
#678    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2600:19)
#679    RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1111:13)
#680    WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:944:7)
#681    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:924:7)
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
====================================================================================================
I/OpenGLRenderer( 1507): Davey! duration=725ms; Flags=0, IntendedVsync=159868971593464, Vsync=159868971593464, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=159868980901800, AnimationStart=159868980931200, PerformTraversalsStart=159868980972100, DrawStart=159868982275600, SyncQueued=159869022993700, SyncStart=159869028916400, IssueDrawCommandsStart=159869072195400, SwapBuffers=159869684501800, FrameCompleted=159869703161500, DequeueBufferDuration=7169100, QueueBufferDuration=715000, GpuCompleted=72904454231491230, 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-04 02:19:34

“此错误由未完成的代码引发,该代码尚未实现所需的所有功能。

如果类不打算实现该特性,则应该抛出一个UnsupportedError。此错误仅供开发期间使用。“

如果你有更多的兴趣到这里去,https://api.flutter.dev/flutter/dart-core/UnimplementedError-class.html

我相信有些人会使用它作为临时占位符,这样当他们到达代码的那一部分时,你会得到一个错误,提醒他们他们仍然必须完成/实现代码的那一部分。

希望这能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2022-04-03 20:58:59

在您的代码(第6行)中,我看到它显式地抛出了前面提到的错误,请您删除这一行,然后再试一次。

票数 1
EN

Stack Overflow用户

发布于 2022-04-04 07:06:55

请删除CardImage构造函数中的“抛出CardImage()”,例如:

代码语言:javascript
复制
const CardImage(this.imagePath, {Key? key}) : super(key: key);

在某些语言中,它充当REMIDER,它防止开发人员忘记实现函数,您可以在kotlin等语言中找到类似的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71729749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档