首页 > 解决方案 > 对“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(),
                  ),
                ),
              ],
            ),
          ),
        ),
      );
    }
  }

标签: flutterdartriverpod

解决方案


您正在“CategoryDe​​tails”构造函数中初始化 categoryName 和 slug。为什么不将其保留为:

CategoryDetails({this.categoryName, this.slug});


推荐阅读