簡體   English   中英

如何使用 Flutter 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM