尝试使用和更新纯 dart 文本中的变量时遇到问题- Flutter

niwlg2el  于 2024-01-03  发布在  Flutter
关注(0)|答案(1)|浏览(110)

我对Flutter & Dart很陌生。我有一个名为“Faith”的普通Dart类,这个类没有 Package 在任何小部件中。一直在尝试在选项和事件标题中使用变量/状态。我应该如何在普通Dart类中创建,使用和更新变量/状态?提前感谢。

class Faith{
  String? childsName = "Joe";

  List<Events> _simulation= [
    Events(
      eventCode: 0,
      eventTitle:
          "Welcome ${childsName}, to the world of darkness.",
      eventImage: "assets/images/welcoming.jpg",
      choices: [
        Choice(choiceText: "Continue"),
        Choice(choiceText: "Go Back"),
      ],
    ),
  ];

字符串
我已经寻找了状态管理工具,如Riverpod和本地flutter状态管理系统。但是我没有成功。我无法使用和更新类中的变量。

z31licg0

z31licg01#

您可以使用setState()方法来更新Flutter中的widget的状态。但是,由于Faith类不是widget,因此您不能直接使用setState()。相反,您可以使用ProviderRiverpod等状态管理解决方案来管理Faith类的状态。
下面是一个如何使用Riverpod管理Faith类状态的示例:

import 'package:flutter_riverpod/flutter_riverpod.dart';

final faithProvider = StateNotifierProvider((_) => FaithNotifier());

class FaithNotifier extends StateNotifier<Faith> {
  FaithNotifier() : super(Faith(childsName: "Joe"));

  void updateChildsName(String name) {
    state = state.copyWith(childsName: name);
  }

  void addEvent(Event event) {
    state = state.copyWith(simulation: [...state.simulation, event]);
  }

  void removeEvent(Event event) {
    state = state.copyWith(
        simulation: state.simulation.where((e) => e != event).toList());
  }
}

class Faith {
  final String childsName;
  final List<Event> simulation;

  Faith({required this.childsName, required this.simulation});

  Faith copyWith({String? childsName, List<Event>? simulation}) {
    return Faith(
      childsName: childsName ?? this.childsName,
      simulation: simulation ?? this.simulation,
    );
  }
}

class Event {
  final int eventCode;
  final String eventTitle;
  final String eventImage;
  final List<Choice> choices;

  Event({
    required this.eventCode,
    required this.eventTitle,
    required this.eventImage,
    required this.choices,
  });
}

class Choice {
  final String choiceText;

  Choice({required this.choiceText});
}

字符串
在这个例子中,我们定义了一个FaithNotifier类,它扩展了StateNotifier<Faith>Faith类包含一个childsName属性和一个_simulation属性,这是一个Event对象的列表。FaithNotifier类提供了更新childsName属性以及从_simulation列表中添加或删除事件的方法。
然后,我们使用StateNotifierProvider定义一个faithProvider,当第一次访问FaithNotifier时,它会创建一个新的FaithNotifier示例。然后,我们可以使用useProvider钩子访问FaithNotifier示例并更新Faith类的状态。
我希望这对你有帮助!让我知道如果你有任何进一步的问题。

相关问题