赞
踩
HandshakeException: Handshake error in client (OS Error: WRONG_VERSION_NUMBER(tls_record.cc:242))
因为使用Dio网络框架进行数据请求时采用的http请求,保证了手机连接的网络和电脑连接的网络IP是同一个
解决方案:
Dio 请求的 BaseUrl var url = Uri.https('xx.x.x.x:端口号', '请求地址后面部分')例如 :
var url = Uri.https('192.168.xx.xx:8080', '/')
Launching lib/main.dart on KOZ AL00 in debug mode...
Running Gradle task 'assembleDebug'... 一直进行中
修改 build.gradle 文件
maven { allowInsecureProtocol = true url 'https://maven.aliyun.com/repository/google' } maven { allowInsecureProtocol = true url 'https://maven.aliyun.com/repository/jcenter' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/groups/public' }
minSdkVersion 16 cannot be smaller than version 19
Suggestion: use a compatible library with a minSdk of at most 16, or increase this project's minSdk version to at least 19, or use tools:overrideLibrary="com.leeson.image_pickers" to force usage (may lead to runtime failures) FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:processDebugMainManifest'. > Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library解决方案
修改minSdkVerison版本
Flutter Incorrect use of ParentDataWidget
原因
Expanded、Flexible等组件 , 在“Container、Padding、Stack”组件中导致的
Expanded、Flexible只在Row、Column等组件内,不在其他组件内使用。
修改后
TextField/Rect argument contained a NaN value. 'dart:ui/painting.dart':
The following assertion was thrown during paint(): Rect argument contained a NaN value. 'dart:ui/painting.dart': Failed assertion: line 40 pos 10: '<optimized out>' Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md When the exception was thrown, this was the stack: #2 _rectIsValid (dart:ui/painting.dart:40:10) #3 Canvas.drawRect (dart:ui/painting.dart:4354:12) #4 _FloatingCursorPainter.paintRegularCursor (package:flutter/src/rendering/editable.dart:2701:16) #5 _FloatingCursorPainter.paint (package:flutter/src/rendering/editable.dart:2732:7) #6 _CompositeRenderEditablePainter.paint (package:flutter/src/rendering/editable.dart:2784:15) #7 _RenderEditableCustomPaint.paint (package:flutter/src/rendering/editable.dart:2434:15) #8 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2403:7) #9 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:141:11) #10 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5) #11 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:973:29) #12 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:499:19) #13 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:883:13) #14 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5) #15 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1145:15) #16 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1082:9) #17 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5) #21 _invoke (dart:ui/hooks.dart:150:10) #22 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5) #23 _drawFrame (dart:ui/hooks.dart:114:31) (elided 5 frames from class _AssertionError and dart:async) The following RenderObject was being processed when the exception was fired: _RenderEditableCustomPaint#9a2f0 ... needs compositing ... parentData: offset=Offset(0.0, 0.0); offset=Offset(0.0, 0.0) ... constraints: BoxConstraints(w=292.0, h=1.0) ... layer: OffsetLayer#55d58 ... engine layer: OffsetEngineLayer#4eb7b ... handles: 2 ... offset: Offset(0.0, 0.0) ... size: Size(292.0, 1.0) RenderObject: _RenderEditableCustomPaint#9a2f0 needs compositing parentData: offset=Offset(0.0, 0.0); offset=Offset(0.0, 0.0) constraints: BoxConstraints(w=292.0, h=1.0) layer: OffsetLayer#55d58 engine layer: OffsetEngineLayer#4eb7b handles: 2 offset: Offset(0.0, 0.0) size: Size(292.0, 1.0)解决方案
发现没有设置编辑框的字体大小 , 设置fontSize 大于 0.0
Please remove the file from history and try again
执行git push (向仓库推送代码) 时报错如下 :
git: 'credential-wincred' is not a git command. See 'git --help'. Enumerating objects: 235, done. Counting objects: 100% (235/235), done. Delta compression using up to 4 threads Compressing objects: 100% (191/191), done. Writing objects: 100% (234/234), 217.68 MiB | 9.88 MiB/s, done. Total 234 (delta 30), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (30/30), done. remote: Powered by GITEE.COM [GNK-6.2] remote: error: File: c7cef8e5daa50e92ddd2a0d4758759dfbfd98eb8 196.64 MB, exceeds 100.00 MB. remote: Use command below to see the filename: remote: git rev-list --objects --all | grep c7cef8e5daa50e92ddd2a0d4758759dfbfd98eb8 remote: Please remove the file from history and try again.解决方案
执行清理缓存
git gc --prune=now
根据错误提示执行命令 / 查看要占有内存过大的文件 / 进行删除
git rev-list --objects --all | grep c7cef8e5daa50e92ddd2a0d4758759dfbfd98eb8占用内存过大的路径是
再次执行命令进行删除
git filter-branch --tree-filter 'rm -f 文件名' HEAD
最后执行命令
git push
background_fetch Received status code 502 from server: Bad Gateway
FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':app:processDebugResources'. > Could not resolve all task dependencies for configuration ':app:debugRuntimeClasspath'. > Could not resolve com.transistorsoft:tsbackgroundfetch:+. Required by: project :app > project :background_fetch > Failed to list versions for com.transistorsoft:tsbackgroundfetch. > Unable to load Maven meta-data from https://google.bintray.com/exoplayer/com/transistorsoft/tsbackgroundfetch/maven-metadata.xml. > Could not get resource 'https://google.bintray.com/exoplayer/com/transistorsoft/tsbackgroundfetch/maven-metadata.xml'. > Could not GET 'https://google.bintray.com/exoplayer/com/transistorsoft/tsbackgroundfetch/maven-metadata.xml'. Received status code 502 from server: Bad Gateway * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.解决方案
更新 Android Studio 版本 / 修改build.gradle配置 / 修改gradle版本号 / 开发工具要和gradle配置一一对应
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
An exception occurred applying plugin request [id: 'com.android.application'] > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. You can try some of the following options: - changing the IDE settings. - changing the JAVA_HOME environment variable. - changing `org.gradle.java.home` in `gradle.properties`.解决方案
No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
解决方案 (Android Studio build.gradle)
Gradle download:kotlin-compiler-embeddable 一直下载中
解决方案
打开 maven 进行搜索 kotlin-compiler
我这里是下载版本1.5.21
找到电脑磁盘里面的 .gradle 文件打开
删除下面标识的文件夹里面的文件 , 替换成下载的jar包
再重新打开AndroidStudio同步一下即可
The binary version of its metadata is 1.5.1, expected version is 1.1.15
解决方案
修改 kotlin_version 版本号 / 旧版本号(1.3.50) 变成新版本号 (1.4.32)
注意 : koltin_version 版本号要和 gradle 版本号对应
Your flutter checkout has local changes that would be erased by upgrading. If you want to keep these changes, it is recommended that you stash them via "git stash" or else commit the changes to a local branch. If it is okay to remove local changes, then re-run this command with --force.解决方案 执行命令
flutter upgrade --force
运行命令 查看安装完成后的 flutter sdk 版本
flutter --version
Unspported class file major version 61
表示还不支持Java17
解决方案
尝试降低JDK版本号 (使用Java16 或者 Java 11 或者 Java8)
使用命令查看电脑安装的JDK版本
/usr/libexec/java_home -V
如果本地不存在比Java17版本低的JDK , 参考Flutter环境变量配置下载JDK
gradle.properties 配置 低于JDK 17 的 JDK 的路径
sendReq failed for wechat app signature check
fluwx 插件 微信分享 , 红米手机系统版本为11 提示 微信未安装
解决方案 :
在应用的AndroidManifest.xml添加如下<queries>标签 , 指定微信包名
NDK matched the requested version
No version of NDK matched the requested version 21.0.6113669. Versions available locally: 22.1.7171670, 23.1.7779620
解决方案
ndkVersion '23.1.7779620'
fluttercontactpicker: ^2.0.0 通讯录插件使用异常
android Attempt to invoke virtual method 'android.content.ContentResolver android.content.Context.getContentResolver()' on a null object reference
解决方案:
Flutter SDK 版本更新到最新
如果用命令更新失败,那么可以直接下载sdk压缩包进行解压后替换以前原有的sdk.
io.flutter.embedding.engine.FlutterEngine@7bd534e
W/FlutterEnginePluginRegistry( 4322): Attempted to register plugin (io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry$ShimRegistrarAggregate@d001e49) but it was already registered with this Flutte rEngine (io.flutter.embedding.engine.FlutterEngine@7bd534e). 大概意思:早注册了FlutterEngine解决方案:
删除 GeneratedPluginRegistrant.registerWith(flutterEngine);
Xcode The sandbox is not in sync with the Podfile.lock.
The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
解决方案:
Android Studio 执行命令flutter build ios
Cannot fit requested classes in a single dex file (# methods: 68807 > 65536)
Running Gradle task 'assembleDebug'... D8: Cannot fit requested classes in a single dex file (# methods: 68807 > 65536) com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K.
D8: Cannot fit requested classes in a single dex file (# methods: 65671 > 65536) com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:132) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:119) at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102) at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:445) at com.android.build.gradle.internal.tasks.Workers$ActionFacade.run(Workers.kt:348) at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50) at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61) at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56) at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215) at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.lang.Thread.run(Thread.java:748) Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete at com.android.tools.r8.utils.O.a(:65) at com.android.tools.r8.D8.run(:11) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:117) ... 34 more Caused by: com.android.tools.r8.utils.b: Error: null, Cannot fit requested classes in a single dex file (# methods: 65671 > 65536) at com.android.tools.r8.utils.y0.a(:21) at com.android.tools.r8.dex.K.a(:56) at com.android.tools.r8.dex.K$h.a(:5) at com.android.tools.r8.dex.b.b(:15) at com.android.tools.r8.dex.b.a(:38) at com.android.tools.r8.D8.d(:87) at com.android.tools.r8.D8.b(:1) at com.android.tools.r8.utils.O.a(:30) ... 36 more FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:mergeDexDebug'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org解决方案:参考
build.gradle下配置修改
defaultConfig { ...... multiDexEnabled true ...... }
dependencies { ...... implementation 'com.android.support:multidex:1.0.3' ...... }
Attribute provider#androidx.core.content.FileProvider@authorities
Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/file_paths)
<provider android:name="androidx.core.content.FileProvider" android:authorities="com.android.demo.fileProvider" android:exported="false" android:grantUriPermissions="true" > <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
Attribute provider#androidx.core.content.FileProvider@authorities value=(com.android.demo.fileProvider) from AndroidManifest.xml:58:13-64 is also present at [:flutter_webview_plugin] AndroidManifest.xml:11:13-64 value=(com.android.demo.fileprovider). Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml to override.
Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/file_paths) from AndroidManifest.xml:53:17-55 is also present at [:flutter_webview_plugin] AndroidManifest.xml:17:17-50 value=(@xml/filepaths). Suggestion: add 'tools:replace="android:resource"' to <meta-data> element at AndroidManifest.xml to override.解决方案:
<provider android:name="androidx.core.content.FileProvider" android:authorities="com.android.demo.fileProvider" android:exported="false" tools:replace="android:authorities" android:grantUriPermissions="true" > <meta-data android:name="android.support.FILE_PROVIDER_PATHS" tools:replace="android:resource" android:resource="@xml/file_paths" /> </provider>
The overflowing RenderFlex has an orientation of Axis.vertical.
e.g. using an Expanded widget
@override Widget build(BuildContext context) { ScreenUtil.init(context, width: 750, height: 1624, allowFontScaling: true); return Scaffold( backgroundColor: scaffoldBackColor(), body: isSv ? getBaseViewNoSv(context) : getBaseView(context), ); }
I/flutter (26133): The overflowing RenderFlex has an orientation of Axis.vertical. I/flutter (26133): The edge of the RenderFlex that is overflowing has been marked in the rendering with a yellow and I/flutter (26133): black striped pattern. This is usually caused by the contents being too big for the RenderFlex. I/flutter (26133): Consider applying a flex factor (e.g. using an Expanded widget) to force the children of the I/flutter (26133): RenderFlex to fit within the available space instead of being sized to their natural size. I/flutter (26133): This is considered an error condition because it indicates that there is content that cannot be I/flutter (26133): seen. If the content is legitimately bigger than the available space, consider clipping it with a I/flutter (26133): ClipRect widget before putting it in the flex, or using a scrollable container rather than a Flex, I/flutter (26133): like a ListView. I/flutter (26133): The specific RenderFlex in question is: RenderFlex#c0a57 relayoutBoundary=up3 OVERFLOWING: I/flutter (26133): needs compositing I/flutter (26133): creator: Column ← _PointerListener ← Listener ← _GestureSemantics ← RawGestureDetector ← I/flutter (26133): GestureDetector ← _BodyBuilder ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] ← I/flutter (26133): CustomMultiChildLayout ← AnimatedBuilder ← DefaultTextStyle ← ⋯ I/flutter (26133): parentData: <none> (can use size) I/flutter (26133): constraints: BoxConstraints(0.0<=w<=411.4, 0.0<=h<=441.5) I/flutter (26133): size: Size(411.4, 441.5) I/flutter (26133): direction: vertical I/flutter (26133): mainAxisAlignment: start I/flutter (26133): mainAxisSize: max I/flutter (26133): crossAxisAlignment: center I/flutter (26133): verticalDirection: down I/flutter (26133): ◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤解决方案 :
resizeToAvoidBottomPadding: false
@override Widget build(BuildContext context) { ScreenUtil.init(context, width: 750, height: 1624, allowFontScaling: true); return Scaffold( backgroundColor: scaffoldBackColor(), resizeToAvoidBottomPadding: false, body: isSv ? getBaseViewNoSv(context) : getBaseView(context), ); }
AnimationControllers should be disposed by calling dispose() on the AnimationController itself.
class CurWidget extends StatefulWidget { @override State<StatefulWidget> createState() => CurWidgetState(); } class CurWidgetState extends State<CurWidget> with TickerProviderStateMixin { AnimationController controller; Animation<double> animation; @override void initState() { // TODO: implement initState super.initState(); controller = AnimationController(duration: const Duration(seconds: 4), vsync: this); animation = Tween(begin: 0.0, end: 1.0).animate(controller); animation.addStatusListener((status) { if (status == AnimationStatus.completed) { ///评估完成 } }); controller.forward(); } @override Widget build(BuildContext context) { return Column( children: [ Padding( padding: ViewUtils.mp(20.0, 20.0, 20.0, 20.0), child: Image.asset(R.assetsImgIcEvaluateProcessTop), ), ViewUtils.commTextEll( '额度评估中……', 0xff000000, 16.0, FontWeight.normal, TextAlign.center), Container( padding: ViewUtils.mp(0.0, 20.0, 0.0, 40.0), child: RotationTransition( //设置动画的旋转中心 alignment: Alignment.center, //动画控制器 turns: animation, //将要执行动画的子view child: Image.asset( R.assetsImgIcEvaluateProgressAnimation, alignment: Alignment.center, ), ), ), ], ); } @override void dispose() { // TODO: implement dispose super.dispose(); if (controller != null) { controller.dispose(); } } }
Reloaded 0 of 947 libraries in 1,515ms. I/chatty ( 9839): uid=10133(com.example.market) 1.ui identical 2 lines I/flutter ( 9839): AppInfo v TopBannerWidget_build I/flutter ( 9839): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ I/flutter ( 9839): The following assertion was thrown while finalizing the widget tree: I/flutter ( 9839): EvaProWidgetState#0f3c5(tickers: tracking 1 ticker) was disposed with an active Ticker. I/flutter ( 9839): EvaProWidgetState created a Ticker via its TickerProviderStateMixin, but at the time dispose() was I/flutter ( 9839): called on the mixin, that Ticker was still active. All Tickers must be disposed before calling I/flutter ( 9839): super.dispose(). I/flutter ( 9839): Tickers used by AnimationControllers should be disposed by calling dispose() on the I/flutter ( 9839): AnimationController itself. Otherwise, the ticker will leak. I/flutter ( 9839): The offending ticker was: I/flutter ( 9839): _WidgetTicker(created by EvaProWidgetState#0f3c5(lifecycle state: created, tickers: tracking 0 I/flutter ( 9839): tickers)) I/flutter ( 9839): The stack trace when the _WidgetTicker was actually created was:解决方案
@override void dispose() { // TODO: implement dispose if (controller != null) { controller.dispose(); } super.dispose(); }
pull_to_refresh
No named parameter with the name 'keyboardDismissBehavior'
could not find a Material
The following assertion was thrown building TextField(controller: TextEditingController#2ed1a(TextEditingValue(text: ┤四大范德萨方式ADF反对党是发生大幅撒地方├, selection: TextSelection(baseOffset: 21, extentOffset: 21, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))), autofocus: true, dirty, dependencies: [MediaQuery, UnmanagedRestorationScope], state: _TextFieldState#884a1): No Material widget found. TextField widgets require a Material widget ancestor. In material design, most widgets are conceptually "printed" on a sheet of material. In Flutter's material library, that material is represented by the Material widget. It is the Material widget that renders ink splashes, for instance. Because of this, many material library widgets require that there be a Material widget in the tree above them. To introduce a Material widget, you can either directly include one, or use a widget that contains Material itself, such as a Card, Dialog, Drawer, or Scaffold. The specific widget that could not find a Material ancestor was: TextField The ancestors of this widget were: ... Container Expanded Row InputPage Semantics ... The relevant error-causing widget was:原代码:
@override Widget build(BuildContext context) { return Row( children: [] );解决方案: 添加Scaffold()
@override Widget build(BuildContext context) { return Scaffold( body: Row( children: [ ], ), ); }
This widget has been unmounted, so the State no longer has a context (and should be considered defunct)
showDialog<void>( context: context, barrierDismissible: false, // user must tap button! builder: (BuildContext context) { return AlertDialog( title: null, content: SingleChildScrollView( child: ListBody( children:[], )), actions: <Widget>[ FlatButton( child: Text('关闭'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, );Navigator.of(context).pop();
关闭对话框传递的context应该是builder参数对应的函数里面的context,不应该是State对应的context.
如果传递State对应的context,那么State被销毁后对话框还会显示.
Unhandled Exception: MissingPluginException(No implementation found for method pickImage on channel plugins.flutter.io/image_picker)
解决方案
点击工具栏绿色箭头运行工程(不通过 flutter run 命令来启动工程)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。