我在使用 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”。尝试导入 定义“状态”的库,将名称更正为 现有的 getter,或者定义名为的 getter 或字段 'state'.dartundefine_getter 类型:InvalidType
我在
pubspec.yaml
中的 Riverpod 版本是:flutter_riverpod: ^2.4.9
。”
来自变更日志:
已弃用 StateProvider.state 而是使用 ref.watch(stateProvider) 或 ref.read(stateProvider.notifier).state =