我在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
。
1条答案
按热度按时间qgelzfjb1#
来自Changelog:
请改用ref.watch(stateProvider)或ref.read(stateProvider.notifier)。state =
并避免遗留的riverpod工具。简而言之,避免遗留的ChangeNotifier,StateNotifier(及其提供程序)和StateProvider。仅使用Provider,FutureProvider,StreamProvider和Notifier,AsyncNotifier,StreamNotifier(及其提供程序)。