У меня есть приложение, в котором у меня есть список (например, для новостей). И на нижней панели инструментов у меня есть кнопки «Предыдущая» и «Следующая». Что я хочу сделать, так это если я нахожусь на ** третьей новости и я нажал на предыдущая кнопка должна показывать go во второй новости. ** Я сделал панель инструментов и прикреплю код ниже. Я добавил полный код для лучшего понимания. Спасибо.
class Newsdetail extends StatefulWidget {
String value_image, value_description, value_title;
int index;
Newsdetail(
{Key key,
@required this.value_image,
this.value_description,
this.value_title,
this.index})
: super(key: key);
@override
_newsdetail createState() => _newsdetail();
}
class _newsdetail extends State<Newsdetail> {
int _currentindex=0;
_newsdetail();
var tabs =[];
loadyourNews() async {
setState(() {
tabs = [
Container(
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: <Widget>[
Padding(padding: const EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 10.0),
child: Row(
children: <Widget>[
Expanded(child:
Image.network(widget.value_image))
],
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
Expanded(
child: Row(
children: <Widget>[
IconButton(
icon: Image.asset('images/facebook.png',),
padding: EdgeInsets.all(0.0),
onPressed: () {
_openFacebook();
}),
IconButton(
icon: Image.asset('images/twitter.png',),
padding: EdgeInsets.all(0.0),
onPressed: () {
_openTwitter();
},
),
IconButton(
icon: Image.asset(
'images/whatsappicon.png', width: 180.0,
height: 180.0,),
padding: EdgeInsets.all(4.0),
onPressed: () {
_openWhatsapp();
},
)
],
),
),
],
),
),
Padding(
padding: const EdgeInsets.fromLTRB(15.0, 5.0, 10.0, 10.0),
child: Row(
children: <Widget>[
Expanded(
child: Text(
widget.value_title,
style: TextStyle(
fontSize: 22.0, fontWeight: FontWeight.bold),
),
),
],
),
),
Padding(
padding: const EdgeInsets.fromLTRB(15.0, 5.0, 10.0, 10.0),
child: Row(
children: <Widget>[
Expanded(
child: Text(
widget.value_description,
style: TextStyle(fontSize: 20.0),
)),
],
),
),
],
),
),
)
];
});
}
@override
void initState() {
super.initState();
loadyourNews();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Text(''),
backgroundColor: Color(0xFF125688),
actions: <Widget>[
Padding(
padding: const EdgeInsets.fromLTRB(0,0,5.0,0),
child: SizedBox(
width: 30,
child: FlatButton(
padding: EdgeInsets.all(0),
onPressed: (){},
child: Text('A+',style: TextStyle(
fontSize: 22.0,color: Colors.white
),))),
),
Padding(
padding: EdgeInsets.fromLTRB(0,0,38.0,0),
child: SizedBox(
width: 30,
child:FlatButton(
padding: EdgeInsets.all(0),
onPressed: (){},
child: Text('A-',style: TextStyle(
fontSize: 15.0,color: Colors.white
),),
)),
)
],
),
body: tabs[_currentindex],
bottomNavigationBar:BottomNavigationBar(
currentIndex: _currentindex,
backgroundColor: Color(0xFF125688),
items: [
BottomNavigationBarItem(
icon: Icon(Icons.arrow_back),
title: Text('Previous',style: TextStyle(
color: Colors.white
),),
backgroundColor: Colors.white,
),
BottomNavigationBarItem(
icon: Icon(Icons.arrow_forward),
title: Text('Next',style: TextStyle(
color: Colors.white
),),
backgroundColor: Colors.white,
),
],
onTap: (index){
setState(() {
if (index == 0) {
_currentindex = (_currentindex - 1) % tabs.length;
if (_currentindex < 0) _currentindex += _currentindex;
} else
_currentindex = (_currentindex + 1) % tabs.length;
});
},
),
);
}