macosui / macos_ui

Flutter widgets and themes implementing the current macOS design language.
https://macosui.github.io/macos_ui/#/
MIT License
1.81k stars 178 forks source link

Null check operator exception on sideBar!.minWidth #431

Open Otakoyi-fesiuk opened 1 year ago

Otakoyi-fesiuk commented 1 year ago

Description

When no Sidebar provided first and than on data Sidebar is rendered - will be Null check operator exception on old.sideBar!.minWidth

riverpod .when() is used here for example

Steps To Reproduce

Widget build(
    BuildContext context,
    WidgetRef ref,
  ) {
    final instances = ref.watch(listProvider);
    return instances.when(
      data: (data) {
        return MacosWindow(
          sidebar: Sidebar(
            builder: (context, scrollController) {
              return const SizedBox();
            },
            minWidth: 100,
          ),
          child: const SizedBox(),
        );
      },
      error: (e, st) => MacosWindow(child: Center(child: Text(e.toString()))),
      loading: () => MacosWindow(
        child: Center(child: ref.widgets.progressIndicator()),
      ),
    );
}
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following _TypeError was thrown building _MacOSHome(dependencies: [UncontrolledProviderScope],
state: _ConsumerState#a8e60, useState<int>: 0):
Null check operator used on a null value

When the exception was thrown, this was the stack:
#0      _MacosWindowState.didUpdateWidget (package:macos_ui/src/layout/window.dart:124:47)
window.dart:124
#1      StatefulElement.update (package:flutter/src/widgets/framework.dart:5260:55)
framework.dart:5260
#2      Element.updateChild (package:flutter/src/widgets/framework.dart:3686:15)
framework.dart:3686
#3      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5111:16)
framework.dart:5111
#4      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
framework.dart:5251
#5      Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
framework.dart:4805
#6      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2780:19)
framework.dart:2780
#7      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:903:21)
binding.dart:903
#8      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
binding.dart:358
#9      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
binding.dart:1284
#10     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
binding.dart:1214
#11     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
binding.dart:1072
#12     _invoke (dart:ui/hooks.dart:142:13)
#13     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
platform_dispatcher.dart:359
#14     _drawFrame (dart:ui/hooks.dart:112:31)

════════════════════════════════════════════════════════════════════════════════════════════════════
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.10.0, on macOS 13.2.1 22D68 darwin-arm64, locale uk-UA)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] VS Code (version 1.78.2)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!
GroovinChip commented 1 year ago

@Otakoyi-fesiuk can you please provide standard sample code? As in, no riverpod or other patterns involved.