Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Two dimensional viewport throws Unexpected null value exception when no child is laid out yet #148255

Closed
Amir-P opened this issue May 13, 2024 · 1 comment · Fixed by #148256
Closed
Labels
a: error message Error messages from the Flutter framework f: scrolling Viewports, list views, slivers, etc. found in release: 3.22 Found to occur in 3.22 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on p: two_dimensional_scrollables Issues pertaining to the two_dimensional_scrollables package P2 Important issues not at the top of the work list team-framework Owned by Framework team triaged-framework Triaged by Framework team waiting for PR to land (fixed) A fix is in flight

Comments

@Amir-P
Copy link
Contributor

Amir-P commented May 13, 2024

Steps to reproduce

  1. Run the example app

Expected results

App should run without any errors.

Actual results

You will get Unexpected null value exception but the app is in working state.

Code sample

Code sample
import 'dart:math' as math;
import 'dart:ui';

import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(useMaterial3: false),
      home: Scaffold(
        body: SimpleBuilderTableView(
          mainAxis: Axis.vertical,
          verticalDetails: const ScrollableDetails.vertical(),
          horizontalDetails: const ScrollableDetails.horizontal(),
          diagonalDragBehavior: DiagonalDragBehavior.none,
          clipBehavior: Clip.hardEdge,
          delegate: TwoDimensionalChildBuilderDelegate(
              maxXIndex: 50,
              maxYIndex: 50,
              addAutomaticKeepAlives: false,
              addRepaintBoundaries: false,
              builder: (BuildContext context, ChildVicinity vicinity) {
                if (vicinity.xIndex > 10) {
                  return ColoredBox(
                    color: vicinity.xIndex.isOdd ? Colors.red : Colors.green,
                    child: SizedBox.square(dimension: 200),
                  );
                }
                return null;
              }),
        ),
      ),
    );
  }
}

class SimpleBuilderTableView extends TwoDimensionalScrollView {
  const SimpleBuilderTableView({
    super.key,
    super.primary,
    super.mainAxis = Axis.vertical,
    super.verticalDetails = const ScrollableDetails.vertical(),
    super.horizontalDetails = const ScrollableDetails.horizontal(),
    required TwoDimensionalChildBuilderDelegate delegate,
    super.cacheExtent,
    super.diagonalDragBehavior = DiagonalDragBehavior.none,
    super.dragStartBehavior = DragStartBehavior.start,
    super.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
    super.clipBehavior = Clip.hardEdge,
  }) : super(delegate: delegate);

  @override
  Widget buildViewport(BuildContext context, ViewportOffset verticalOffset,
      ViewportOffset horizontalOffset) {
    return SimpleBuilderTableViewport(
      horizontalOffset: horizontalOffset,
      horizontalAxisDirection: horizontalDetails.direction,
      verticalOffset: verticalOffset,
      verticalAxisDirection: verticalDetails.direction,
      mainAxis: mainAxis,
      delegate: delegate as TwoDimensionalChildBuilderDelegate,
      cacheExtent: cacheExtent,
      clipBehavior: clipBehavior,
    );
  }
}

class SimpleBuilderTableViewport extends TwoDimensionalViewport {
  const SimpleBuilderTableViewport({
    super.key,
    required super.verticalOffset,
    required super.verticalAxisDirection,
    required super.horizontalOffset,
    required super.horizontalAxisDirection,
    required TwoDimensionalChildBuilderDelegate delegate,
    required super.mainAxis,
    super.cacheExtent,
    super.clipBehavior = Clip.hardEdge,
  }) : super(delegate: delegate);

  @override
  RenderTwoDimensionalViewport createRenderObject(BuildContext context) {
    return RenderSimpleBuilderTableViewport(
      horizontalOffset: horizontalOffset,
      horizontalAxisDirection: horizontalAxisDirection,
      verticalOffset: verticalOffset,
      verticalAxisDirection: verticalAxisDirection,
      mainAxis: mainAxis,
      delegate: delegate as TwoDimensionalChildBuilderDelegate,
      childManager: context as TwoDimensionalChildManager,
      cacheExtent: cacheExtent,
      clipBehavior: clipBehavior,
    );
  }

  @override
  void updateRenderObject(
      BuildContext context, RenderSimpleBuilderTableViewport renderObject) {
    renderObject
      ..horizontalOffset = horizontalOffset
      ..horizontalAxisDirection = horizontalAxisDirection
      ..verticalOffset = verticalOffset
      ..verticalAxisDirection = verticalAxisDirection
      ..mainAxis = mainAxis
      ..delegate = delegate
      ..cacheExtent = cacheExtent
      ..clipBehavior = clipBehavior;
  }
}

class RenderSimpleBuilderTableViewport extends RenderTwoDimensionalViewport {
  RenderSimpleBuilderTableViewport({
    required super.horizontalOffset,
    required super.horizontalAxisDirection,
    required super.verticalOffset,
    required super.verticalAxisDirection,
    required TwoDimensionalChildBuilderDelegate delegate,
    required super.mainAxis,
    required super.childManager,
    super.cacheExtent,
    super.clipBehavior = Clip.hardEdge,
  }) : super(delegate: delegate);

  RenderBox? testGetChildFor(ChildVicinity vicinity) => getChildFor(vicinity);

  @override
  void layoutChildSequence() {
    // Really simple table implementation for testing.
    // Every child is 200x200 square
    final double horizontalPixels = horizontalOffset.pixels;
    final double verticalPixels = verticalOffset.pixels;
    final double viewportWidth = viewportDimension.width + cacheExtent;
    final double viewportHeight = viewportDimension.height + cacheExtent;
    final TwoDimensionalChildBuilderDelegate builderDelegate =
        delegate as TwoDimensionalChildBuilderDelegate;

    final int maxRowIndex;
    final int maxColumnIndex;
    maxRowIndex = builderDelegate.maxYIndex ?? 5;
    maxColumnIndex = builderDelegate.maxXIndex ?? 5;

    final int leadingColumn = math.max((horizontalPixels / 200).floor(), 0);
    final int leadingRow = math.max((verticalPixels / 200).floor(), 0);
    final int trailingColumn = math.min(
      ((horizontalPixels + viewportWidth) / 200).ceil(),
      maxColumnIndex,
    );
    final int trailingRow = math.min(
      ((verticalPixels + viewportHeight) / 200).ceil(),
      maxRowIndex,
    );

    double xLayoutOffset = (leadingColumn * 200) - horizontalOffset.pixels;
    for (int column = leadingColumn; column <= trailingColumn; column++) {
      double yLayoutOffset = (leadingRow * 200) - verticalOffset.pixels;
      for (int row = leadingRow; row <= trailingRow; row++) {
        final ChildVicinity vicinity =
            ChildVicinity(xIndex: column, yIndex: row);
        final RenderBox? child = buildOrObtainChildFor(vicinity);

        child?.layout(constraints.tighten(width: 200.0, height: 200.0));

        if (child != null) {
          parentDataOf(child).layoutOffset =
              Offset(xLayoutOffset, yLayoutOffset);
        }
        yLayoutOffset += 200;
      }
      xLayoutOffset += 200;
    }

    final double verticalExtent = 200 * (maxRowIndex + 1);
    verticalOffset.applyContentDimensions(
      0.0,
      clampDouble(
          verticalExtent - viewportDimension.height, 0.0, double.infinity),
    );
    final double horizontalExtent = 200 * (maxColumnIndex + 1);
    horizontalOffset.applyContentDimensions(
      0.0,
      clampDouble(
          horizontalExtent - viewportDimension.width, 0.0, double.infinity),
    );
  }
}

Logs

Logs
══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following TypeErrorImpl was thrown during performLayout():
Unexpected null value.

The relevant error-causing widget was:
  SimpleBuilderTableViewport
  SimpleBuilderTableViewport:file:///lib/main.dart:62:12

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3       throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18  nullCheck
packages/flutter/src/widgets/two_dimensional_viewport.dart 1321:28                [_reifyChildren]
packages/flutter/src/widgets/two_dimensional_viewport.dart 1260:7                 <fn>
packages/flutter/src/rendering/object.dart 2688:51                                <fn>
packages/flutter/src/rendering/object.dart 1098:7                                 [_enableMutationsToDirtySubtrees]
packages/flutter/src/rendering/object.dart 2688:7                                 invokeLayoutCallback
packages/flutter/src/widgets/two_dimensional_viewport.dart 1250:5                 performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/custom_layout.dart 173:10                          layoutChild
packages/flutter/src/material/scaffold.dart 1097:7                                performLayout
packages/flutter/src/rendering/custom_layout.dart 237:7                           [_callPerformLayout]
packages/flutter/src/rendering/custom_layout.dart 404:5                           performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/proxy_box.dart 1448:11                             performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/layout_helper.dart 61:10                           layoutChild
packages/flutter/src/rendering/stack.dart 595:43                                  [_computeSize]
packages/flutter/src/rendering/stack.dart 622:12                                  performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/proxy_box.dart 3728:13                             performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/widgets/overlay.dart 1002:12                                 layoutChild
packages/flutter/src/widgets/overlay.dart 1311:9                                  performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/custom_paint.dart 569:11                           performLayout
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:21                              <fn>
packages/flutter/src/rendering/object.dart 2577:7                                 layout
packages/flutter/src/rendering/view.dart 281:7                                    performLayout
packages/flutter/src/rendering/object.dart 2416:7                                 [_layoutWithoutResize]
packages/flutter/src/rendering/object.dart 1052:17                                flushLayout
packages/flutter/src/rendering/object.dart 1065:14                                flushLayout
packages/flutter/src/rendering/binding.dart 602:5                                 drawFrame
packages/flutter/src/widgets/binding.dart 1138:13                                 drawFrame
packages/flutter/src/rendering/binding.dart 468:5                                 [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1392:7                                [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1313:9                                handleDrawFrame
packages/flutter/src/scheduler/binding.dart 1035:9                                <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:11           internalCallback

The following RenderObject was being processed when the exception was fired: RenderSimpleBuilderTableViewport#c3adc NEEDS-LAYOUT NEEDS-PAINT:
  needs compositing
  creator: SimpleBuilderTableViewport ← IgnorePointer-[GlobalKey#86c87] ← Semantics ← Listener ←
    _GestureSemantics ← RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#a96f5] ←
    Listener ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#02c3d] ←
    NotificationListener<ScrollMetricsNotification> ←
    _HorizontalInnerDimension-[LabeledGlobalKey<ScrollableState>#4de8e] ←
    IgnorePointer-[GlobalKey#6a5e6] ← ⋯
  parentData: <none> (can use size)
  constraints: BoxConstraints(0.0<=w<=1138.0, 0.0<=h<=682.0)
  size: Size(1138.0, 682.0)
This RenderObject has no descendants.
════════════════════════════════════════════════════════════════════════════════════════════════════

Flutter Doctor output

Doctor output
[✓] Flutter (Channel master, 3.22.0-31.0.pre.23, on macOS 14.4.1 23E224
    darwin-arm64, locale en-US)
    • Flutter version 3.22.0-31.0.pre.23 on channel master at
      /flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 9abde3e615 (12 hours ago), 2024-05-13 04:47:24 -0400
    • Engine revision fab7a74178
    • Dart version 3.5.0 (build 3.5.0-147.0.dev)
    • DevTools version 2.36.0-dev.5

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /SDK
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      17.0.10+0-17.0.10b1087.21-11572160)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.10+0-17.0.10b1087.21-11572160)

[✓] VS Code (version 1.89.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.88.0

[✓] Connected device (4 available)
    • macOS (desktop)                 • macos                     • darwin-arm64
      • macOS 14.4.1 23E224 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin
      • macOS 14.4.1 23E224 darwin-arm64
    • Chrome (web)                    • chrome                    •
      web-javascript • Google Chrome 119.0.6045.123

[✓] Network resources
    • All expected network resources are available.

• No issues found!
@danagbemava-nc
Copy link
Member

Reproducible using the code sample provided above.

flutter doctor -v
[!] Flutter (Channel stable, 3.22.0, on macOS 14.4.1 23E224 darwin-arm64, locale en-GB)
    • Flutter version 3.22.0 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5dcb86f68f (5 days ago), 2024-05-09 07:39:20 -0500
    • Engine revision f6344b75dc
    • Dart version 3.4.0
    • DevTools version 2.34.3
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode-15.3.0.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

[✓] VS Code (version 1.89.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.88.0

[✓] Connected device (6 available)
    • Pixel 7 (mobile)                • adb-28291FDH2001SA-5Lv71w._adb-tls-connect._tcp. • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)                  • 00008020-001875E83A38002E                        • ios            • iOS 17.4.1 21E236
    • Dean’s iPad (mobile)            • 00008103-000825C811E3401E                        • ios            • iOS 17.4.1 21E236
    • macOS (desktop)                 • macos                                            • darwin-arm64   • macOS 14.4.1 23E224 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad                            • darwin         • macOS 14.4.1 23E224 darwin-arm64
    • Chrome (web)                    • chrome                                           • web-javascript • Google Chrome 124.0.6367.202

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.
[✓] Flutter (Channel master, 3.22.0-33.0.pre.5, on macOS 14.4.1 23E224 darwin-arm64, locale en-GB)
    • Flutter version 3.22.0-33.0.pre.5 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 21177cced4 (3 hours ago), 2024-05-14 01:06:32 -0400
    • Engine revision 84687fe0f1
    • Dart version 3.5.0 (build 3.5.0-152.0.dev)
    • DevTools version 2.36.0-dev.5

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode-15.3.0.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

[✓] VS Code (version 1.89.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.88.0

[✓] Connected device (6 available)
    • Pixel 7 (mobile)                • adb-28291FDH2001SA-5Lv71w._adb-tls-connect._tcp. • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)                  • 00008020-001875E83A38002E                        • ios            • iOS 17.4.1 21E236
    • Dean’s iPad (mobile)            • 00008103-000825C811E3401E                        • ios            • iOS 17.4.1 21E236
    • macOS (desktop)                 • macos                                            • darwin-arm64   • macOS 14.4.1 23E224 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad                            • darwin         • macOS 14.4.1 23E224 darwin-arm64
    • Chrome (web)                    • chrome                                           • web-javascript • Google Chrome 124.0.6367.202

[✓] Network resources
    • All expected network resources are available.

• No issues found!

@danagbemava-nc danagbemava-nc added framework flutter/packages/flutter repository. See also f: labels. f: scrolling Viewports, list views, slivers, etc. a: error message Error messages from the Flutter framework has reproducible steps The issue has been confirmed reproducible and is ready to work on team-framework Owned by Framework team p: two_dimensional_scrollables Issues pertaining to the two_dimensional_scrollables package found in release: 3.22 Found to occur in 3.22 and removed in triage Presently being triaged by the triage team labels May 14, 2024
@goderbauer goderbauer added waiting for PR to land (fixed) A fix is in flight P2 Important issues not at the top of the work list triaged-framework Triaged by Framework team labels May 14, 2024
Amir-P added a commit to Amir-P/flutter that referenced this issue May 19, 2024
Amir-P added a commit to Amir-P/flutter that referenced this issue May 20, 2024
Amir-P added a commit to Amir-P/flutter that referenced this issue May 21, 2024
auto-submit bot pushed a commit that referenced this issue May 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a: error message Error messages from the Flutter framework f: scrolling Viewports, list views, slivers, etc. found in release: 3.22 Found to occur in 3.22 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on p: two_dimensional_scrollables Issues pertaining to the two_dimensional_scrollables package P2 Important issues not at the top of the work list team-framework Owned by Framework team triaged-framework Triaged by Framework team waiting for PR to land (fixed) A fix is in flight
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants