我按照这个例子将我的第一个InheritedWidget
添加到我的应用程序中。我已经创建了我的_state_container.dart
文件,现在想使用它。
首先,我想在小部件中使用它,在那里我可以在群聊中显示聊天内容。此小部件位于文件receivedChats.dart
(聊天标头(中。我在这个例子中看到,我所需要做的就是在目标的小部件构建函数中实例化container
,但问题是这个小部件正在调用另一个名为message_dao.dart
的文件来处理来自Firebase的所有数据。这个文件没有小部件构建功能,那么我该如何使用这里的容器呢?
文件结构:
main.dart
|
wrapper.dart
|
home.dart //or authenticate.dart if user is not logged in
|
chatScreen.dart
| |
msgInput.dart receivedChats.dart - message_dao.dart
这是我已经尝试过的,但它给出了2个错误:
class MessageDao {
final container = StateContainer.of(context); //ERROR: Undefined name 'context'.
final chatState = container.chatState; //ERROR: The instance member 'container' can't be accessed in an initializer.
//...rest of code...//
它是一个类,Dart类是对象的蓝图,也可以称为对象构造函数。它只是还没有初始化。就像StateContainer
一样;
class MessageDao {
//here :
final StateContainerState container;
MessageDao(this.container);
chatstate(){
return container.chatState;
}
}
当有一个实际的构建上下文可以传递给时,您需要在代码中的某个地方初始化它
final messageDaoState = MessageDao(StateContainer.of(context));
final chatstate = messageDaoState.chatstate();