dart Flutter:我怎么能在每个州解决这个错误呢

34gzjxbg  于 2024-01-04  发布在  Flutter
关注(0)|答案(1)|浏览(173)

我在Riverpod的Flutter中遇到了一个严重的问题。我刚刚开始学习它,但是我在每个.state中都遇到了错误,并且没有AI能够帮助我解决这个问题。
下面是完整的代码:

// my_button_widget.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final buttonSelectedProvider = StateProvider<bool>((ref) => false);

class MyButtonWidget extends ConsumerWidget {
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Riverpod Button Example'),
      ),
      body: Center(
        child: ElevatedButton(
          style: ButtonStyle(
            backgroundColor: MaterialStateProperty.resolveWith<Color>(
              (Set<MaterialState> states) {
                if (states.contains(MaterialState.pressed))
                  return Colors.orange;
                return ref.watch(buttonSelectedProvider).state //error in .state
                    ? Colors.orange
                    : Colors.white; // Use the component's default.
              },
            ),
          ),
          onPressed: () {
            ref.read(buttonSelectedProvider).state = //error in .state
                !ref.read(buttonSelectedProvider).state; //error in .state
          },
          child: Text('Press me'),
        ),
      ),
    );
  }
}

字符串
VS Code的建议如下:
没有为类型“bool”定义getter“state”。请尝试导入定义“state”的库,将名称更正为现有getter的名称,或者定义名为“state”的getter或字段。dartundefined_getter类型:InvalidType
我在pubspec.yaml中的Riverpod版本是:flutter_riverpod: ^2.4.9

qgelzfjb

qgelzfjb1#

来自Changelog:
请改用ref.watch(stateProvider)或ref.read(stateProvider.notifier)。state =
并避免遗留的riverpod工具。简而言之,避免遗留的ChangeNotifier,StateNotifier(及其提供程序)和StateProvider。仅使用Provider,FutureProvider,StreamProvider和Notifier,AsyncNotifier,StreamNotifier(及其提供程序)。

相关问题