我使用getx
rest API通过后端URLid
获取数据如何将id
传递到URL
https://localhost.com/api/users/get_planDetail/{id}
这里id
如何传递这是API URLhttps://localhost.com/api/users/get_planDetail/{id}
我的计划服务
static Future<List?> fetchPlans(int value) async {
var response = await client.get(
Uri.parse('https://localhost.com/api/users/get_planDetail/'));
if (response.statusCode == 200) {
var jsonString = response.body;
print(jsonString);
return PlansFromJson(jsonString);
} else {
//show error message
return null;
}
}
我的计划控制器
var isLoading = true.obs;
// ignore: deprecated_member_use
var plansList = <Plans>[].obs;
RxInt planId = 0.obs;
@override
void onInit() {
fetchPlans();
super.onInit();
}
setPlanId(int id) {
planId.value = id;
print(id);
if (planId.value != 0 && planId.value != null) {
fetchPlans();
}
}
void fetchPlans() async {
try {
isLoading(true);
var plans = await PlanServices.fetchPlans(planId.value);
print(plans);
if (plans != null) {
plansList.value = plans as List<Plans>;
}
} finally {
isLoading(false);
}
我的caregories.dart
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PlanDetails(
id: categoryController
.categorysList[index].id)));
},
我的plan.dart
void initState() {
// call this method for api calling
planController.setPlanId(widget.id);
super.initState();
}
我点击上面的id像这样传递我的计划服务URLhttps://localhost.com/api/users/get_planDetail/1
如何获得数据
您需要像这个一样传递上一页的数据
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => PlanDetailsScreen(id: 1)));
},
这是您需要调用控制器方法的PlanDetailScreen
class PlanDetailScreen extends StatefulWidget {
final int id;
const PlanDetailScreen({Key key, this.id}) : super(key: key);
@override
_PlanDetailScreenState createState() => _PlanDetailScreenState();
}
class _PlanDetailScreenState extends State<PlanDetailScreen> {
PlanController con = Get.put(PlanController());
@override
void initState() {
super.initState();
// call this method for api calling
con.setPlanId(widget.id);
}
@override
Widget build(BuildContext context) {
return Scaffold(
// your code
);
}
}
这是您需要为调用的api生成函数的控制器文件
class PlanController extends GetxController {
RxInt planId = 0.obs;
setPlanId(int id) {
planId.value = id;
if (planId.value != 0 && planId.value != null) {
fetchPlans();
}
}
void fetchPlans() async {
try {
isLoading(true);
var plans = await PlanServices.fetchPlans(planId.value);
if (plans != null) {
plansList.value = plans as List<Plans>;
}
} finally {
isLoading(false);
}
}
}