You can copy paste run full code below
You can define return type to getShippingAddressByUserId() and _getShippingAddressByUserId()
You can check class Shipping definition and FutureBuilder in full code
code snippet
Future<http.Response> getShippingAddressByUserId(int userId) async {
//return await _repository.httpGetById('get-shipping-address-by-user-id', userId);
return await http.get(
"https://androidapp.factory2homes.com/api/get-shipping-address-by-user-id/3");
}
Future<Shipping> _getShippingAddressByUserId() async {
//SharedPreferences _prefs = await SharedPreferences.getInstance();
int _userId = 3; //_prefs.getInt('userId');
ShippingAddressService _shippingAddressService = ShippingAddressService();
var result =
await _shippingAddressService.getShippingAddressByUserId(_userId);
if (result.statusCode == 200) {
return shippingFromJson(result.body);
}
}
working demo

full code
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
Shipping shippingFromJson(String str) => Shipping.fromJson(json.decode(str));
String shippingToJson(Shipping data) => json.encode(data.toJson());
class Shipping {
Shipping({
this.data,
});
List<Datum> data;
factory Shipping.fromJson(Map<String, dynamic> json) => Shipping(
data: List<Datum>.from(json["data"].map((x) => Datum.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"data": List<dynamic>.from(data.map((x) => x.toJson())),
};
}
class Datum {
Datum({
this.id,
this.name,
this.address,
this.userId,
this.createdAt,
this.updatedAt,
});
int id;
String name;
String address;
int userId;
DateTime createdAt;
DateTime updatedAt;
factory Datum.fromJson(Map<String, dynamic> json) => Datum(
id: json["id"],
name: json["name"],
address: json["address"],
userId: json["user_id"],
createdAt: DateTime.parse(json["created_at"]),
updatedAt: DateTime.parse(json["updated_at"]),
);
Map<String, dynamic> toJson() => {
"id": id,
"name": name,
"address": address,
"user_id": userId,
"created_at": createdAt.toIso8601String(),
"updated_at": updatedAt.toIso8601String(),
};
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: ShippingAddressPage(title: 'Flutter Demo Home Page'),
);
}
}
class ShippingAddressService {
//Repository _repository;
ShippingAddressService() {
//_repository = Repository();
}
Future<http.Response> getShippingAddressByUserId(int userId) async {
//return await _repository.httpGetById('get-shipping-address-by-user-id', userId);
return await http.get(
"https://androidapp.factory2homes.com/api/get-shipping-address-by-user-id/3");
}
}
class ShippingAddressPage extends StatefulWidget {
ShippingAddressPage({Key key, this.title}) : super(key: key);
final String title;
@override
_ShippingAddressPageState createState() => _ShippingAddressPageState();
}
class _ShippingAddressPageState extends State<ShippingAddressPage> {
int _counter = 0;
Future<Shipping> _future;
Future<Shipping> _getShippingAddressByUserId() async {
//SharedPreferences _prefs = await SharedPreferences.getInstance();
int _userId = 3; //_prefs.getInt('userId');
ShippingAddressService _shippingAddressService = ShippingAddressService();
var result =
await _shippingAddressService.getShippingAddressByUserId(_userId);
if (result.statusCode == 200) {
return shippingFromJson(result.body);
}
}
@override
void initState() {
_future = _getShippingAddressByUserId();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: FutureBuilder(
future: _future,
builder: (context, AsyncSnapshot<Shipping> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('none');
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
case ConnectionState.active:
return Text('');
case ConnectionState.done:
if (snapshot.hasError) {
return Text(
'${snapshot.error}',
style: TextStyle(color: Colors.red),
);
} else {
return ListView.builder(
itemCount: snapshot.data.data.length,
itemBuilder: (context, index) {
return Card(
elevation: 6.0,
child: Padding(
padding: const EdgeInsets.only(
top: 6.0,
bottom: 6.0,
left: 8.0,
right: 8.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(snapshot.data.data[index].name),
Spacer(),
Text(snapshot.data.data[index].id
.toString()),
],
),
));
});
}
}
}));
}
}