问题描述
我正在尝试获取需要在 url 中传递的 'slug' 参数的数据,该 url 是我从上一个屏幕获得的,但我无法访问它。
return BaseClient()
.postData(url,'filter/productByCategory?page=1&slug=${this.slug}','');
完整代码:
class CategoryDetails extends ConsumerWidget {
CategoryDetails({this.categoryName = '',this.slug = ''});
final String categoryName;
final String slug;
final productCategoryDetailsProvider = FutureProvider<dynamic>((ref) async {
final String url = baseUrl;
return BaseClient()
.postData(url,'');
});
@override
Widget build(BuildContext context,ScopedReader watch) {
return Scaffold(
appBar: AppBar(
title: Text(categoryName),iconTheme: IconThemeData(color: Colors.white),backgroundColor: Colors.purple,),body: Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,children: [
SizedBox(
height: 40,Text(
categoryName,style: TextStyle(fontSize: 24,color: Colors.purple),Text(
slug,SizedBox(
height: 20,Container(
margin: EdgeInsets.all(20),child: GridView.builder(
itemCount: 9,physics: BouncingScrollPhysics(),gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 180,childAspectRatio: 3 / 4,crossAxisspacing: 10,mainAxisspacing: 10),shrinkWrap: true,itemBuilder: (BuildContext ctxt,int index) => ProductCard(),],);
}
}
解决方法
有了空安全,您可以使用 late
关键字来修复该错误:
代替
final productCategoryDetailsProvider = ...
使用
late final productCategoryDetailsProvider = ...
,
您正在 'CategoryDetails' 构造函数中初始化 categoryName 和 slug。为什么不把它保留为:
CategoryDetails({this.categoryName,this.slug});