[英]How to change state value without rebuilding the widget in Flutter using riverpod?
[英]how can i change bool variable using Flutter Riverpod
我是Flutter Riverpod management
的新手
我有使用Flutter Riverpod management
的 stfl 小部件,我需要將測試布爾變量更改為 true 但無法處理
final testProvider = StateProvider<bool>((ref) => false);
`class FriendsList extends ConsumerStatefulWidget {
const FriendsList({Key? key}) : super(key: key);
@override
_FriendsListState createState() => _FriendsListState();
}
class _FriendsListState extends ConsumerState<FriendsList> {
@override
Widget build(BuildContext context) {
bool test = ref.watch(testProvider);
return Stack( //edit
children [
!test ? Text('bool varible is false')
: Text('bool varible is true')
FutureBuilder(
future: FirebaseFirestore.instance.collection('users')
.doc('userId').get(),
builder: (context, AsyncSnapshot snapshot) {
if(!snapshot.hasData){
return Text('');
}else{
ref.read(testProvider.state).state = true;
}
return snapshot.data['name'];
我不知道如何處理這個。 我也不確定我的代碼是否正確,以及如果需要如何處理它
不能從Provider
外部更改Provider
中的值。 請改用StateProvider
。
看一下這個:
final testProvider = StateProvider<bool>((ref) => false);
class FriendList extends ConsumerStatefulWidget {
const FriendList({Key? key}) : super(key: key);
@override
ConsumerState<ConsumerStatefulWidget> createState() => _FriendListState();
}
class _FriendListState extends ConsumerState<FriendList> {
@override
Widget build(BuildContext context) {
bool test = ref.watch(testProvider);
return IconButton(
onPressed: () {
ref.read(testProvider.state).state = true;
},
icon: Text(
test ? "Variable updated" : "Still not updated",
),
);
}
}
訪問Riverpod 文檔以了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.