BottomNavigationBar throws exception

1,136 views
Skip to first unread message

木村哲朗

unread,
Jun 16, 2021, 11:29:12 PM6/16/21
to Flutter Development (flutter-dev)
Hello. When I tapped red marked area of screenshot, this error occurred. And this is the brief code. Are there any solution?

[error]
Unhandled Exception: 'package:flutter/src/painting/text_painter.dart': Failed assertion: line 881 pos 12: '!_needsLayout': is not true.
...
[code]
Widget build(BuildContext context) {
List body = [
Container(color: Colors.orange,),
Container(color: Colors.black,),
Container(color: Colors.redAccent,),
];
return Scaffold(
  bottomNavigationBar: BottomNavigationBar(
    showSelectedLabels: false,
    showUnselectedLabels: false,
    selectedItemColor: Colors.greenAccent,
    onTap: (index) {
      setState(() {
        this.index = index;
      });
    },
    currentIndex: index,
    items: [
       BottomNavigationBarItem(
         icon: Icon(Icons.add),
         activeIcon: Icon(Icons.check),
         label: 'one',
        ),
         BottomNavigationBarItem(
            icon: Icon(Icons.add),
            activeIcon: Icon(Icons.check),
            label: 'two',
          ),
         BottomNavigationBarItem(
            icon: Icon(Icons.add),
            activeIcon: Icon(Icons.check),
            label: 'three',
          ),
      ],
   ),
   body: body[index],
  );screenshot.jpg
}

Suzuki Tomohiro

unread,
Jun 16, 2021, 11:40:21 PM6/16/21
to 木村哲朗, Flutter Development (flutter-dev)
Can you paste the entire error message?

What’s the initial value of this.index?


--
You received this message because you are subscribed to the Google Groups "Flutter Development (flutter-dev)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flutter-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flutter-dev/b917778e-1e23-4756-8029-88f802a21e2cn%40googlegroups.com.

木村哲朗

unread,
Jun 17, 2021, 2:34:44 AM6/17/21
to Flutter Development (flutter-dev)
Thanks for replying to me.
The initial value of index is 0.
[entire error message]
E/flutter (32589): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: 'package:flutter/src/painting/text_painter.dart': Failed assertion: line 881 pos 12: '!_needsLayout': is not true.
E/flutter (32589): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
E/flutter (32589): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
E/flutter (32589): #2      TextPainter.getPositionForOffset (package:flutter/src/painting/text_painter.dart:881:12)
E/flutter (32589): #3      RenderParagraph.hitTestChildren (package:flutter/src/rendering/paragraph.dart:456:52)
E/flutter (32589): #4      RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #5      RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #6      RenderTransform.hitTestChildren.<anonymous closure> (package:flutter/src/rendering/proxy_box.dart:2347:22)
E/flutter (32589): #7      BoxHitTestResult.addWithRawTransform (package:flutter/src/rendering/box.dart:826:31)
E/flutter (32589): #8      BoxHitTestResult.addWithPaintTransform (package:flutter/src/rendering/box.dart:751:12)
E/flutter (32589): #9      RenderTransform.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:2343:19)
E/flutter (32589): #10     RenderTransform.hitTest (package:flutter/src/rendering/proxy_box.dart:2337:12)
E/flutter (32589): #11     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #12     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #13     RenderShiftedBox.hitTestChildren.<anonymous closure> (package:flutter/src/rendering/shifted_box.dart:92:25)
E/flutter (32589): #14     BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:787:31)
E/flutter (32589): #15     RenderShiftedBox.hitTestChildren (package:flutter/src/rendering/shifted_box.dart:87:21)
E/flutter (32589): #16     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #17     RenderBoxContainerDefaultsMixin.defaultHitTestChildren.<anonymous closure> (package:flutter/src/rendering/box.dart:2775:25)
E/flutter (32589): #18     BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:787:31)
E/flutter (32589): #19     RenderBoxContainerDefaultsMixin.defaultHitTestChildren (package:flutter/src/rendering/box.dart:2770:33)
E/flutter (32589): #20     RenderFlex.hitTestChildren (package:flutter/src/rendering/flex.dart:1072:12)
E/flutter (32589): #21     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #22     RenderShiftedBox.hitTestChildren.<anonymous closure> (package:flutter/src/rendering/shifted_box.dart:92:25)
E/flutter (32589): #23     BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:787:31)
E/flutter (32589): #24     RenderShiftedBox.hitTestChildren (package:flutter/src/rendering/shifted_box.dart:87:21)
E/flutter (32589): #25     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #26     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #27     RenderProxyBoxWithHitTestBehavior.hitTest (package:flutter/src/rendering/proxy_box.dart:178:19)
E/flutter (32589): #28     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #29     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #30     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #31     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #32     RenderMouseRegion.hitTest (package:flutter/src/rendering/proxy_box.dart:2905:18)
E/flutter (32589): #33     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #34     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #35     RenderBoxContainerDefaultsMixin.defaultHitTestChildren.<anonymous closure> (package:flutter/src/rendering/box.dart:2775:25)
E/flutter (32589): #36     BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:787:31)
E/flutter (32589): #37     RenderBoxContainerDefaultsMixin.defaultHitTestChildren (package:flutter/src/rendering/box.dart:2770:33)
E/flutter (32589): #38     RenderStack.hitTestChildren (package:flutter/src/rendering/stack.dart:620:12)
E/flutter (32589): #39     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2414:11)
E/flutter (32589): #40     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:131:19)
E/flutter (32589): #41     RenderBox.hitTest (package:flutter/src/rend
I/ViewRootImpl(32589): ViewRoot's Touch Event : ACTION_DOWN
I/ViewRootImpl(32589): ViewRoot's Touch Event : ACTION_UP


Suzuki Tomohiro

unread,
Jun 17, 2021, 10:34:47 AM6/17/21
to 木村哲朗, Flutter Development (flutter-dev)
Can you try this?


    showSelectedLabelstrue,
    showUnselectedLabelstrue,

木村哲朗

unread,
Jun 17, 2021, 11:14:57 PM6/17/21
to Flutter Development (flutter-dev)
It worked! But the labels were shown. So, I changed labelStyle's fontSize and height to 0. Then no error occurred and the bar became what I want.
Thanks!

Ming Jun Siek

unread,
Jul 16, 2021, 1:37:33 AM7/16/21
to Flutter Development (flutter-dev)
I also have the same issue and this solution works. But I don't understand why it works. Why is setting both selected and unselected labels to false cause the error?
Reply all
Reply to author
Forward
0 new messages