0

今天我想知道为什么在将这些代码定义到项目中后我不能context.read在里面使用:HookWidget

class FavoriteAddressBottomSheet extends HookWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
        child: Material(
          color: Colors.transparent,
          child: Container(
            ...
            child: Column(
              children: [
                ValueListenableBuilder(
                    valueListenable: _address.listenable(),
                    builder: (BuildContext context, Box address, __) {
                      return Expanded(
                        child: ListView.builder(
                          padding: EdgeInsets.zero,
                          itemBuilder: (context, index) {
                            return GestureDetector(
                              onTap: ()=> context.read(orderStateNotifierProvider.notifier).updateAddress(),
                              child: Container(
                                  ...
                            );
                          },
                          itemCount: _address.length,
                        ),
                      );
                    }),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

my orderStateNotifierProviderandupdateAddress是正确的,因为我在项目中使用了更多它们,但是当我尝试在ListView其中ListView使用时,ValueListenableBuilder我得到了这个错误:

The method 'read' isn't defined for the type 'BuildContext'.
4

1 回答 1

0

你进口供应商了吗?context.read 是 Provider 的扩展方法。要使用它,您必须导入 Provider。

import 'package:flutter_riverpod/flutter_riverpod.dart';
于 2021-08-28T18:04:49.060 回答