我试图在Flutter中使用 BottomNavigationBar
,但它给了我一个奇怪的错误,似乎没有引用我的代码,我无法在任何地方找到此错误 . 事实上,我能找到的每个教程,页面或问题都说都是这样做的 .
这是我的代码来自 home.dart
:
... Imports ...
class HomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return HomePageState();
}
}
class HomePageState extends State<HomePage> {
int _selectedTab = 0;
final _pageOptions = [
HomePage(),
CatPage(),
SearchPage(),
];
void _onItemTapped(int index) {
setState(() {
_selectedTab = index;
});
print(index);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Loopt In'),
),
body: _pageOptions[_selectedTab],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _selectedTab,
onTap: _onItemTapped,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text('Home'),
),
BottomNavigationBarItem(
icon: Icon(Icons.category),
title: Text('Categories'),
),
BottomNavigationBarItem(
icon: Icon(Icons.search),
title: Text('Search'),
),
],
),
);
}
}
有趣的是,当我更改 _pageOptions
数组以获得 Text()
小部件而不是小部件时,我使其工作正常,但我不知道为什么并且需要它显然与我的小部件一起工作 .
这是我得到的错误:
[VERBOSE-2:shell.cc(181)] Dart Error: Unhandled exception:
'package:flutter/src/widgets/framework.dart': Failed assertion: line 2257 pos 20: '_debugCurrentBuildTarget == context': is not true.
#0 _AssertionError._doThrowNew (dart:core/runtime/liberrors_patch.dart:40:39)
#1 _AssertionError._throwNew (dart:core/runtime/liberrors_patch.dart:36:5)
#2 BuildOwner.buildScope.<anonymous closure> (package:flutter/src/widgets/framework.dart:2257:20)
#3 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2261:12)
#4 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:817:13)
#5 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:709:7)
#6 runApp (package:flutter/src/widgets/binding.dart:748:7)
#7 main (file:///Users/garrettlove/Documents/learn/Flutter/loopt_in/lib/main.d<…>