同时改变导航条索引页



不好意思,我是法国长棍面包

这是我的问题,我想知道我如何切换页面,而移动我的索引在导航栏我已经尝试了上面的解决方案,但我的崩溃几秒钟后,我想知道为什么?

这是我的主页的代码

import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter_application_1/views/screenmaps_view.dart';
import 'package:flutter_application_1/views/screenussers_views.dart';
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
int _selectedItemIndex = 0;
int setPageIndex = 0;
final pages = [
HomeScreen(),
PageMaps(),
userpage(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: pages[setPageIndex], //the line that makes me crash my application
//backgroundColor: Colors.amber,
bottomNavigationBar: Row(
children: [
newNavBarItem(Icons.home_outlined, 0),
newNavBarItem(Icons.map_outlined, 1),
newNavBarItem(Icons.home, 2),
],
),
);
}
Widget newNavBarItem(IconData icon, int index) {
return GestureDetector(
onTap: () {
setState(() {
_selectedItemIndex = index;
setPageIndex = index;
});
},
child: Container(
height: 70,
width: MediaQuery.of(context).size.width / 3,
decoration: index == _selectedItemIndex
? BoxDecoration(
border: Border(
bottom: BorderSide(width: 4, color: Color(0xff238ADC)),
),
gradient: LinearGradient(colors: [
Color(0xff7EC1F6).withOpacity(0.3),
Color(0xff7EC1F6).withOpacity(0.015)
], begin: Alignment.bottomCenter, end: Alignment.topCenter),
)
: BoxDecoration(),
child: Icon(icon,
color:
index == _selectedItemIndex ? Colors.black : Colors.black)),
);
}
}

我初始化一个变量"setPageIndex"使用导航条的索引值将其与要显示的主体相关联,但没有成功,则崩溃报告较低

@override
Widget build(BuildContext context) {
return Scaffold(
body: pages[setPageIndex], //the line that makes me crash my application
//backgroundColor: Colors.amber,
bottomNavigationBar: Row(
children: [
newNavBarItem(Icons.home_outlined, 0),
newNavBarItem(Icons.map_outlined, 1),
newNavBarItem(Icons.home, 2),
],
),
);
}

这里是errors_path.dart的错误

@pragma("vm:external-name", "AssertionError_throwNew")
external static _doThrowNew(
int assertionStart, int assertionEnd, Object? message);
@pragma("vm:external-name", "AssertionError_throwNewSource")
external static _doThrowNewSource(
String failedAssertion, int line, int column, Object? message);

这是我的调试控制台的错误


#24     DiagnosticsNode.toString
package:flutter/…/foundation/diagnostics.dart:1706
#25     Diagnosticable.toString.<anonymous closure>
package:flutter/…/foundation/diagnostics.dart:3168
#26     Diagnosticable.toString
package:flutter/…/foundation/diagnostics.dart:3170
#27     _StringBase._interpolate (dart:core-patch/string_patch.dart:853:19)
#28     ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4785
#29     StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4928
#30     Element.rebuild
package:flutter/…/widgets/framework.dart:4477
#31     ComponentElement._firstBuild
package:flutter/…/widgets/framework.dart:4735
#32     StatefulElement._firstBuild
package:flutter/…/widgets/framework.dart:4919
#33     ComponentElement.mount
package:flutter/…/widgets/framework.dart:4729
...     Normal element mounting (7 frames)
#40     Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#41     Element.updateChild
package:flutter/…/widgets/framework.dart:3540
#42     ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4780
#43     Element.rebuild
package:flutter/…/widgets/framework.dart:4477
2
...
...     Normal element mounting (21 frames)
#4821   Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#4822   Element.updateChild
package:flutter/…/widgets/framework.dart:3540
#4823   RenderObjectToWidgetElement._rebuild
package:flutter/…/widgets/binding.dart:1198
#4824   RenderObjectToWidgetElement.mount
package:flutter/…/widgets/binding.dart:1167
#4825   RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure>
package:flutter/…/widgets/binding.dart:1112
#4826   BuildOwner.buildScope
package:flutter/…/widgets/framework.dart:2600
#4827   RenderObjectToWidgetAdapter.attachToRenderTree
package:flutter/…/widgets/binding.dart:1111
#4828   WidgetsBinding.attachRootWidget
package:flutter/…/widgets/binding.dart:944
#4829   WidgetsBinding.scheduleAttachRootWidget.<anonymous closure>
package:flutter/…/widgets/binding.dart:924
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
════════════════════════════════════════════════════════════════════════════════

如果代码中有些东西对你来说很特别,我顺便说一下,如果有什么地方不对,请告诉我:)

感谢你阅读我的帖子

这个问题是因为你在导航条的pages数组中再次添加了HomeScreen,而它已经是屏幕上有导航条了,所以你的页面应该是:

final pages = [
AnotherHomePage(),
PageMaps(),
userpage(),
];

最新更新