flutter - 对“this”表达式的引用无效
问题描述
我正在尝试获取需要在我从上一个屏幕获得的 url 中传递的 'slug' 参数但我无法访问它的数据。
此行显示错误:
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, 'filter/productByCategory?page=1&slug=${this.slug}', '');
});
@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,
style: TextStyle(fontSize: 24, color: Colors.purple),
),
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(),
),
),
],
),
),
),
);
}
}
解决方案
您正在“CategoryDetails”构造函数中初始化 categoryName 和 slug。为什么不将其保留为:
CategoryDetails({this.categoryName, this.slug});
推荐阅读
- ruby - 忽略特定的 \n 字符,同时仍然启用 m 标志
- python - Python 3.6.5 中的 Base58 和 utf-8 编码问题
- docker - 离开 docker swarm,但让服务继续运行
- swift - 'initializeMemory(as:at:count:to:)' 已弃用
- excel - 使用日期隐藏excel中的列
- php - php - 表单提交按钮不起作用
- labview - 在LabVIEW中解压从串口读取的二进制数据
- php - 使用 javascript 从 echo 下拉列表中传递数据
- javascript - 将JS添加到HTML页面,浏览器差异
- jcl - JCL/REXX - PDS 中的成员