0

我在使用订阅时遇到了颤振 + GraphQL 的问题。我正在使用 web 后端进行颤动,每当调整视图大小时,都会导致订阅被取消并重新制作,从而向我的后端发送请求。

这是有道理的,因为调整视图大小会使 Flutter 重新创建小部件,并且小部件包括 GraphQL 订阅。

所以我知道我的问题是代码架构问题,而不是颤振问题。然而,我在网上找到的所有使用 GraphQL 和 Flutter 的示例都遵循完全相同的模式。当要执行的订阅取决于显示的视图时,我不确定如何组织我的代码以使 GraphQL 订阅在视图“外部”。

关于我应该如何组织我的代码的任何想法?

谢谢您的帮助!

这是我目前用于展示我的数据并从 GraphQL 获取信息的结构。

class PersonWidget extends StatelessWidget {

  PersonWidget({required this.personId});

  Widget build(BuildContext context) {
    return Subscription(
      options: SubscriptionOptions(
        document: gql(r'''
          subscription ($personId: Int!){
            person(where: {id: {_eq: $personId}}) {
              id
              first_name
              last_name
              email
              }
            }
          }
        '''),
        variables: <String, String>{
          'personId': personId.toString(),
        },
      ),
      builder: (result) {
        if (result.isLoading && result.data == null) {
          return const Center(
            child: CircularProgressIndicator(),
          );
        }
        var person = result.data!['person'][0];

        return WidgetStructureGoesHere( ... );
      },
    );
  }
}
4

0 回答 0