gpt4 book ai didi

Flutter 给出意外字符 : Undefined location error while working with graphql

转载 作者:IT王子 更新时间:2023-10-29 06:57:16 40 4
gpt4 key购买 nike

我已经使用库 graphql_flutter 设置了我的 graphql 客户端,我正在尝试从另一个页面进行调用以呈现来自服务器 API 的项目列表,如下所示:

main.dart 中的 Graphql 客户端设置

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {


// This widget is the root of your application.
@override
Widget build(BuildContext context) {
HttpLink httpLink = HttpLink(uri: 'http://192.168.122.1:8000/graphql');

final AuthLink authLink = AuthLink();
final Link link = httpLink as Link;

ValueNotifier<GraphQLClient> client = ValueNotifier(
GraphQLClient(
cache: NormalizedInMemoryCache(
dataIdFromObject: _typenameDataIdFromObject),
link: link,
),
);



return GraphQLProvider(
client: client,
child: CacheProvider(
child: MaterialApp(
title: 'Flutter graphql',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CategoriesPage())));
}

String _typenameDataIdFromObject(Object object) {
if (object is Map<String, Object> &&
object.containsKey('__typename') &&
object.containsKey('id')) {
return "${object['__typename']}/${object['id']}";
}
return null;
}
}

我已经设置了 Django 服务器 以获取图像中的数据。 API 正在按预期呈现项目。

enter image description here

并且,在我的另一个页面上,我有“查询”来获取数据。

String projectsQuery = r"""
query {
projects {
id
title
__typename
}
}
""";

@override
Widget build(BuildContext context) {


return Query(
options: QueryOptions(document: projectsQuery),
builder: (QueryResult result, {VoidCallback refetch}) {
Widget body = _apiResult(result);

return Scaffold(
appBar: AppBar(title: Text('Categories'), actions: [
IconButton(
icon: Icon(Icons.person),
tooltip: 'Login',
onPressed: () {}),
]),
body: body);
});
}

Widget _apiResult(QueryResult result) {

print(result.errors)
if (result.errors != null) {
return Text('Error');
}
if (result.loading) {
return Text('Loading...');
}
return CategoriesList(categories: result.data['data']['projects']);
}}

我在上面的函数 _apiResult 中打印了 result.errors。它给出以下错误:[意外字符:未定义的位置]

并且,在 flutter 控制台结束时显示以下消息:

I/flutter (26761): [FormatException, FormatException: Unexpected character (at character 1)
I/flutter (26761): <!DOCTYPE html>
I/flutter (26761): ^
I/flutter (26761): ]
I/flutter ( 3666): http://192.168.122.1:8000/graphql/
I/flutter ( 3666): request body :
I/flutter ( 3666): {operationName: UNNAMED/229217349, variables: {}, query: query {
I/flutter ( 3666): projects {
I/flutter ( 3666): id
I/flutter ( 3666): title
I/flutter ( 3666): __typename
I/flutter ( 3666): }
I/flutter ( 3666): }
I/flutter ( 3666): }

并且,当前的错误是:

 {"errors":[{"message":"Unknown operation named \"UNNAMED/229217349\"."}]}

我之前没有检查过这个,但是发现 Django 也报错了

Bad Request: /graphql/
[30/Apr/2019 13:01:38] "POST /graphql/ HTTP/1.1" 400 73

因此,我认为问题出在 Django,无法以正确的格式获取请求。我的 API 请求似乎有误。

最佳答案

我有一个与这个非常相似的错误

[Unknown operation named "UNNAMED/355583712".: Undefined location]

我通过在查询中添加一个名称来解决这个问题,如下所示:

query NameOfQuery {
projects {
id
title
__typename
}
}

关于Flutter 给出意外字符 : Undefined location error while working with graphql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55894047/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com