Flutter 开发错误集合

Be honest rather clever.
诚实比聪明更要紧。

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'

解决方案

猜你喜欢

转载自blog.csdn.net/u013491829/article/details/111406293