修改类内部的列表- Flutter, Riverpod, Hooks



我想有一个包含另一个类的列表的类,并能够使用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>
}
}
``

相关内容

  • 没有找到相关文章

最新更新