我可以设置另一个类的状态吗



所以我想知道是否有任何方法可以从另一个类设置这个selectedIndex变量的状态?因为当我按下另一个屏幕上的按钮时,我正试图更改导航栏上的页面,我真的很抱歉浪费了你的时间,但我有点不知所措?

class Nav_bar extends StatefulWidget {
@override
_Nav_barState createState() => _Nav_barState();
}
class _Nav_barState extends State<Nav_bar> {

void changeIndex() {
setState(() {
selectedIndex = 2;
});
}
int selectedIndex = 0;

final _pageOptions = [
Search_vehicles(),
Chats(),
Chats(),
Chats(),
];

@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: _pageOptions[selectedIndex],
),
bottomNavigationBar: Container(


child: SafeArea(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15.0, vertical: 20),
child: GNav(

tabs: [
GButton(

),
GButton(

),
GButton(

),
GButton(

),
],
selectedIndex: selectedIndex,
onTabChange: (index) {
setState(() {
selectedIndex = index;
});
}),
),
),
),
);
}
}

当然,您可以从另一个类设置状态。您可以使用提供程序,并从应用程序中的任何位置设置和获取所选索引。

import 'package:flutter/material.dart';
class IndexProvider extends ChangeNotifier {
int _selectedIndex = 0;
int get selectedIndex => this._selectedIndex;
set setSelectedIndex(int value) {
_selectedIndex = value;
notifyListeners();
}
}

你可以从这里阅读更多关于应用程序状态管理的信息。

最新更新