我想有一个包含另一个类的列表的类,并能够使用Riverpod/Hooks更新它。我正在努力找出最好的语法,甚至是处理这个问题的方法。
我从一个StateProvider开始,使它更简单,并认为使用列表方法。add()添加到列表中,但我得到了错误:'add'方法不能被无条件调用,因为接收器可以是'null'。';或null检查操作符用于空值(当我添加!)-所以我认为我没有正确地写它,我确信它与Riverpod甚至Dart语法有关。
任何建议或资源将不胜感激。提前谢谢。
例如:
Session({this.title, this.sessionThings})
String? title;
List<SessionThings> sessionThings;
}
class SessionThings{
SessionThings({this.title, this.time})
String? title;
double? time;
}
ref.read(buildExSessionProvider.notifier).state = Session()..sessionThings.add(SessionThings(title: 'something', time: 20);
使用:hooks_riverpod: ^ 1.0.3flutter_hooks: ^ 0.18.3
不要在通知器之外访问state
。可以这样做:
class SessionStateNotifier extends StateNotifier<Session?> {
SessionStateNotifier() : super(null);
void create(String title) => state = Session(title: title);
void add(SessionThings things) =>
state = Session(title: state?.title, sessionThings: [...state?.sessionThings ?? [], things]);
}
与钩子一起使用
class MyApp extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = useState(0);
final Session? session = ref.watch(sessionProvider);
final SessionStateNotifier sessionStateNotifier = ref.watch(sessionProvider.notifier);
return <widget>
}
}
``