I created my own service in .net core 5.0 version. I preferred flutter which is multi-platform for front end. However, although I tried many ways from the service I wrote, I could not get my data. I can pull data from free services such as jsonplaceholder. I have enabled CORS on the backend. The strings I use for the url are localhost:port, 127.0.0.1:port, 10.0.2.2:port, MyIpAddress:port didn't work. It returns socket exception as an error. Error = SocketException: Connection refused (OS Error:Connection refused, errno=111), address localhost, port:60074
class Department_Api {
static Future<List<dynamic>> getData() async{
// Future<List<Department>> _getDepartmentList();
try {
var request = http.Request('GET', Uri.parse('https://localhost:44318/api/departments'));
http.StreamedResponse response = await request.send();
List<Department> _departmentList = [];
if (response.statusCode == 200) {
final List<Department> rspns =await response.stream.bytesToString() as List<Department>;
_departmentList = rspns;
}
else {
print(response.reasonPhrase);
}
} catch (e) {
return Future.error(e.toString());
}
return [];
}
static Future<List<Department>> getAllDepartments() async {
List temp = await getData(
);
return Department.departmentsToList(temp);
}
}
class Department {
late final int DepartmentId;
late final String DepartmentName;
late final int OrganizationId;
Department(
{required this.DepartmentId,
required this.OrganizationId,
required this.DepartmentName});
factory Department.fromJson(Map<String, dynamic> json) {
return Department(
DepartmentId: json['DepartmentId'],
OrganizationId: json['OrganizationId'],
DepartmentName: json['DepartmentName']);
}
Map<String, dynamic> toJson() {
final _data = <String, dynamic>{};
_data['deparmentId'] = DepartmentId;
_data['departmentName'] = DepartmentName;
_data['organizationID'] = OrganizationId;
return _data;
}
static List<Department> departmentsToList(List departmentToList) {
return departmentToList.map((data) {
return Department.fromJson(data);
}).toList();
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
static String routeName = "/home";
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
Future<List<Department>>? myFuture;
void initState() {
myFuture = Department_Api.getAllDepartments();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"Organizations",
style: TextStyle(color: Colors.black),
),
backgroundColor: Colors.white,
centerTitle: true,
),
body: Padding(
padding: EdgeInsets.all(10.0),
child: Column(
children: <Widget>[
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [
FutureBuilder<List<Department>>(
future: myFuture,
builder: (context, snapshot) {
if (snapshot.hasData) {
var myFutureList = snapshot.data!;
return ListView.builder(
itemCount: myFutureList.length,
itemBuilder: (context, index) {
var department = myFutureList[index];
return ListTile(
title: Text(department.DepartmentName),
subtitle: Text(department.DepartmentId.toString()),
leading: Text(department.OrganizationId.toString()),
);
},
);
} else if (snapshot.hasError) {
return Text(snapshot.error.toString());
} else
{ return const CircularProgressIndicator();}
},
),
],
),
),
],
),
),
);
}
}