Я хочу переключиться на другой экран, когда я нажимаю на другой значок на панели вкладок, но он не работает. Я всегда нахожусь в HomeScreen (), и я не могу переключиться на HomeScreenMapView (). Я думаю, что у меня есть проблема при возврате ListView.builder
, но я не знаю, как мне продолжить.
Мой код:
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import '../screens/home_screen.dart';
import '../screens/home_screen_map_view.dart';
class TabBarTop extends StatefulWidget {
@override
_TabBarTopState createState() => _TabBarTopState();
}
class _TabBarTopState extends State<TabBarTop> with SingleTickerProviderStateMixin {
bool _isAppbar = true;
ScrollController _scrollController = new ScrollController();
@override
void initState() {
super.initState();
_scrollController.addListener(() {
if (_scrollController.position.userScrollDirection ==
ScrollDirection.reverse) {
appBarStatus(false);
}
if (_scrollController.position.userScrollDirection ==
ScrollDirection.forward) {
appBarStatus(true);
}
});
}
void appBarStatus(bool status) {
setState(() {
_isAppbar = status;
});
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(MediaQuery.of(context).size.height * 0.12),
child: AnimatedContainer(
height: _isAppbar ? MediaQuery.of(context).size.height * 1 : 0.0,
duration: Duration(milliseconds: 200),
child: CustomAppBar(),
),
),
body: ListView.builder(
controller: _scrollController,
itemCount: 100,
itemBuilder: (BuildContext context, int index) {
return HomeScreen();
},
),
),
);
}
}
class CustomAppBar extends StatefulWidget {
@override
AppBarView createState() => new AppBarView();
}
class AppBarView extends State<CustomAppBar> {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: NestedScrollView(
headerSliverBuilder: (context, value) {
return [
SliverAppBar(
title: Center(
heightFactor: 0,
child: Padding(
padding: const EdgeInsets.only(top: 7),
child: Image.asset(
'assets/images/***.png',
fit: BoxFit.cover,
scale: MediaQuery.of(context).size.width * 0.007,
alignment: Alignment.bottomCenter,
),
),
),
expandedHeight: MediaQuery.of(context).size.height * 0.12,
primary: true,
floating: true,
pinned: true,
bottom: TabBar(
indicatorColor: Color.fromRGBO(253, 166, 41, 1.0),
tabs: <Widget>[
Tab(
icon: Icon(Icons.list),
),
Tab(
icon: Icon(Icons.location_on),
),
],
),
forceElevated: false,
flexibleSpace: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
Color.fromRGBO(107, 176, 62, 1.0),
Color.fromRGBO(153, 199, 58, 1.0),
],
),
),
),
)
];
},
body: TabBarView(
children: <Widget>[
HomeScreen(),
HomeScreenMapView(),
],
),
),
);
}
}
Спасибо:)