У меня проблема с флаттером: раньше я писал свое приложение флаттера на windows 10, и у меня не было проблем с этим. но с тех пор, как я перешел на ubuntu 20.04, я столкнулся с некоторыми проблемами с флаттером.
когда я запускаю простое приложение флаттера по умолчанию, оно работает очень хорошо без каких-либо проблем, но когда я делаю простое приложение для использования graphql-flutter пакет для отправки запроса, сразу после нажатия F5 для запуска программы я обнаружил это сообщение об ошибке:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':connectivity'.
> Could not resolve all artifacts for configuration ':connectivity:classpath'.
> Could not find crash.jar (com.android.tools.analytics-library:crash:26.3.0).
Searched in the following locations:
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.3.0/crash-26.3.0.jar
> Failed to notify project evaluation listener.
> Could not get unknown property 'android' for project ':connectivity' of type org.gradle.api.Project.
> Could not find method implementation() for arguments [project ':connectivity_macos'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
Exception: Gradle task assembleDebug failed with exit code 1
my pubspe c .yaml файл, содержащий:
dependencies:
flutter:
sdk: flutter
graphql_flutter: ^3.0.1
и мой Результат выполнения flutter doctor:
hossein@MHT:~$ flutter doctor -v
[✓] Flutter (Channel stable, v1.17.0, on Linux, locale en_US.UTF-8)
• Flutter version 1.17.0 at /home/hossein/Development/flutter
• Framework revision e6b34c2b5c (6 days ago), 2020-05-02 11:39:18 -0700
• Engine revision 540786dd51
• Dart version 2.8.1
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
• Android SDK at /home/hossein/Android/Sdk
• Platform android-29, build-tools 29.0.3
• Java binary at: /snap/android-studio/88/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
• All Android licenses accepted.
[✓] Android Studio (version 3.6)
• Android Studio at /snap/android-studio/88/android-studio
• Flutter plugin version 45.1.1
• Dart plugin version 192.7761
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
[✓] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)
• No issues found!
*** обновление: я снова проверил свой код, когда я удаляю пакет graphql-flutter и все связанные виджеты и функции из моего кода, проблема не возникает, и мой сборка кода и успешное выполнение. кажется, есть проблема между пакетом graphql-flutter и sdk или gradle flutter. но я не знаю, как мне преодолеть эту ошибку. пожалуйста, помогите мне.
мой код флаттера с пакетом graphql-flutter, который вызвал ошибку:
import 'package:flutter/material.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GraphQLProvider(
client: Config.initailizeClient(),
child: MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
appBarTheme: AppBarTheme(color: Colors.grey[700]),
),
home: HomePage(),
),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String query = '''
query Products(\$name: String!) {
products(name:\$name) {
id
name
price
}
}
''';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Directionality(
textDirection: TextDirection.rtl,
child: Query(
options: QueryOptions(
// this is the query string you just created
documentNode: gql(query),
variables: {
"name": "بوت",
},
),
builder: (QueryResult result,
{VoidCallback refetch, FetchMore fetchMore}) {
if (result.hasException) {
return Text(result.exception.toString());
}
if (result.loading) {
return Center(child: CircularProgressIndicator());
}
return Container(
margin: EdgeInsets.only(right: 8.0, left: 8.0),
child: ListView.builder(
itemCount: result.data["products"].length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
onTap: () {},
title: Container(
padding: EdgeInsets.all(5.0),
height: 35.0,
child: Text(
result.data["products"][index]["name"],
style: TextStyle(
color: Colors.grey[850],
fontFamily: 'Yekan',
fontSize: 18.0),
),
),
subtitle: Text(
result.data["products"][index]["price"],
style: TextStyle(
color: Colors.redAccent,
fontFamily: 'Yekan',
fontSize: 15.0),
),
trailing: Icon(Icons.arrow_right),
contentPadding: EdgeInsets.only(top: 3.5, bottom: 3.5),
);
},
),
);
},
),
),
);
}
}
class Config {
static final HttpLink link = HttpLink(
headers: <String, String>{
'Authorization': 'JWT ${Env.jwtToken}',
'Content-Type': 'application/json'
},
uri: Env.graphqlEndpointURL,
);
static ValueNotifier<GraphQLClient> initailizeClient() {
ValueNotifier<GraphQLClient> client = ValueNotifier(
GraphQLClient(
cache: InMemoryCache(),
link: link,
),
);
return client;
}
}
и когда я удаляю функциональность пакета graphql-flutter и упрощаю свой код, который создается и запускается успешно выглядит так:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
appBarTheme: AppBarTheme(color: Colors.grey[700]),
),
home: SecondPage(),
);
}
}
class SecondPage extends StatefulWidget {
@override
_SecondPageState createState() => _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: Text('salam'),
),
);
}
}