【发布时间】:2021-07-08 16:46:14
【问题描述】:
我对 Flutter 很陌生,我想我还没有理解 Providers 状态管理背后的所有逻辑。 我有以下小部件:
class App extends StatelessWidget {
List<IconButton> navigationActions(BuildContext context) {
return
Consumer<ApplicationState>(builder: (context, appState, _) {
if (appState.loginState == 'loggedIn') {
return [IconButton(
icon: const Icon(Icons.logout),
tooltip: 'Logout',
onPressed: () {
context.read<ApplicationState>().signOut();
},
)];
}
})
;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('FOO'),
actions: navigationActions(context)
),
body: ListView(
.........
)
)
}
我想根据在 ApplicationState 中设置的标志 loginState 显示/隐藏 AppBar 操作
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => ApplicationState(),
builder: (context, _) => App(),
),
);
}
class ApplicationState extends ChangeNotifier {
ApplicationState() {
init();
}
String _loginState = 'loggedOut';
String get loginState => _loginState;
}
我不确定如何实现函数navigationActions。 哪个应该是返回类型?由于我没有在 else 分支中返回数据,因此我不确定如何管理该类型。 也许有更聪明的解决方案,我还不知道.. 有人曾经用 Providers 实现过类似的逻辑吗?
【问题讨论】: