如何传递id来获取数据flutter



我使用getxrest 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);
}
}
}

最新更新