0Day Forums
type 'int' is not a subtype of type 'double' - Printable Version

+- 0Day Forums (https://zeroday.vip)
+-- Forum: Coding (https://zeroday.vip/Forum-Coding)
+--- Forum: Flutter & Dart (https://zeroday.vip/Forum-Flutter-Dart)
+--- Thread: type 'int' is not a subtype of type 'double' (/Thread-type-39-int-39-is-not-a-subtype-of-type-39-double-39)

Pages: 1 2


type 'int' is not a subtype of type 'double' - streamingsupkpi - 07-21-2023

I have this issue on my flutter application. It seems failed to load an API request, but when i try on browser it return okay "http://vplay.id/api/series/popular".

**Debug**

exception = {_Exception} Exception: Failed to load
message = "Failed to load"
this = {SeriesProvider}
_url = "http://vplay.id/api/"
_loading = false
_currentPage = 1
_pages = 1
_series = {_GrowableList} size = 0
_seriesStream = {_AsyncStreamController}
endpoint = "series/popular"
e = {_TypeError} type 'int' is not a subtype of type 'double'
_stackTrace = {_StackTrace}
_failedAssertion = "is assignable"
_url = "package:streamapp/src//helpers/parse.dart"
_line = 31
_column = 7
message = "type 'int' is not a subtype of type 'double'"

**Series_provider.dart**

import 'dart:async';
import 'dart:convert';

import 'package:http/http.dart' as http;
import '../helpers/api.dart';
import '../models/serie_model.dart';
export '../models/serie_model.dart';

class SeriesProvider {
String _url = Api.url;
bool _loading = false;
int _currentPage = 1;
int _pages = 1;
List<Serie> _series = List();
final _seriesStream = StreamController<List<Serie>>();

Function(List<Serie>) get seriesSink => _seriesStream.sink.add;
Stream<List<Serie>> get seriesStream => _seriesStream.stream;

void dispose() {
_seriesStream?.close();
}

Future<List<Serie>> _process(String endpoint) async {
try {
final resp = await http.get(_url + endpoint);

if (resp.statusCode != 200) {
throw Exception('Failed to load');
}

final data = json.decode(resp.body);

final series = Series.fromJsonList(data);

return series.items;
} catch (e) {
throw Exception('Failed to load');
}
}
**Helpers/parse.dart**

static double checkDouble(dynamic value) {
if (value is String) {
return double.parse(value);
} else {
return value;
}
}
}
This is my first time with flutter, and this is interesting since it only me face this issue (this is an app i get from codecanyon marketplace) with fresh installation.


RE: type 'int' is not a subtype of type 'double' - muggars30915 - 07-21-2023

```
static double checkDouble(dynamic value) {
if (value is String) {
return double.parse(value);
} else {
return value;
}
}
}
```

The problem seems from the last ```return value```. You may need ```return value+.0```.


RE: type 'int' is not a subtype of type 'double' - rosinol800271 - 07-21-2023

In my case, this error was because I had to represent my number as a double value, not an int value.

Example:

Change 0 to 0.0.

double rating = rating??0;

to:



double rating = rating??0.0;






RE: type 'int' is not a subtype of type 'double' - brooklyn143480 - 07-21-2023

An idea would be to use `num` instead of `int` or `double` in this case.


RE: type 'int' is not a subtype of type 'double' - paraffiner840240 - 07-21-2023

***As Gustavo Rodrigues mentioned below, do not use this as a standard solution, this is only a workaround.***

I had a similar issue getting weather data.

I solved by declaring the variable as a `dynamic` instead of `int` type.


RE: type 'int' is not a subtype of type 'double' - mingccphgkugee - 07-21-2023

```dart
double? checkDouble(dynamic value) {
if(value is double) return value;
if(value is int) return value.toDouble();
if(value is String) return double.tryParse(value);
return null;
}
int? checkInt(dynamic value) {
if(value is int) return value;
if(value is double) return value.toInt();
if(value is String) return int.tryParse(value);
return null;
}
```


RE: type 'int' is not a subtype of type 'double' - opuscule461176 - 07-21-2023

You only need to add .toDouble() function to last returned value.

static double checkDouble(dynamic value) {
if (value is String) {
return double.parse(value);
} else {
return value.toDouble();
}
}
}


RE: type 'int' is not a subtype of type 'double' - Sirebonee8 - 07-21-2023

var coordinatesFromJson = json["coordinates"] as List<dynamic>;
List<double> coordinatesList = [];
(coordinatesFromJson as List<dynamic>).forEach((element) {
if (element is int)
coordinatesList.add((element).toDouble());
else
coordinatesList.add(element);
});


RE: type 'int' is not a subtype of type 'double' - inspoke651419 - 07-21-2023

Will this help you?

double.parse(rating.toString());





RE: type 'int' is not a subtype of type 'double' - cassiellrge - 07-21-2023

You can initialize you variables with double.
```
class MyBrick extends StatelessWidget {
double x;
double y;
MyBrick({required this.x, required this.y});

@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment(x, y),
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
color: Colors.white,
height: 20,
width: MediaQuery.of(context).size.width / 5,
),
),
);
}
}
```
This worked for me...