我之前分别观察了一些字符串和布尔值的状态,如下所示:
var strSearchProvider = StateProvider<String>((ref) {
return "";
});
String strSearch = ref.watch(strSearchProvider ); // this works
这一次,我try 创建一个简单的对象,包括字符串和布尔值:
class AppState {
String strSerach = "";
bool playing = false;
bool searching = false;
AppState();
}
var appStateProvider = StateProvider<AppState>((ref) {
return AppState();
});
现在我是这样看的:
// inside consumer buid method
AppState watchedState = ref.watch(appStateProvider);
// some codes ..
appbar: AppBar(
actions: !watchedState.searching
? [
Padding(
padding: const EdgeInsets.all(8.0),
child: IconButton(
icon: const Icon(Icons.search),
onPressed: () {
ref.read(appStateProvider.notifier).update((state) {
state.searching = true;
return state;
});
}),
)
]
: [
Padding(
padding: const EdgeInsets.all(8.0),
child: IconButton(
icon: const Icon(Icons.clear),
onPressed: () {
ref.read(appStateProvider.notifier).update((state) {
state.searching = false;
return state;
});
}),
)
],
//the rest
但当我按下搜索图标时,什么也没有发生,并且没有真正地监视到已监视状态.
那我该怎么做呢?分开提供/观看所有内容是一种好做法吗?