asjqkkkk / markdown_widget

📖Rendering markdown by flutter!Welcome for pr and issue.
MIT License
331 stars 95 forks source link

TocItemBuilderData 应该把 AutoScrollController 传进去,否则自定义 itemBuilder的时候无法使用 wrapByAutoScroll 功能 #167

Open zhouzhuo810 opened 8 months ago

zhouzhuo810 commented 8 months ago
   Expanded(
                    child: TocWidget(
                  controller: controller.tocController,
                  itemBuilder: (data) {
                    bool isCurrentToc = data.index == data.currentIndex;
                    final node = data.toc.node.copy(
                        headingConfig: _TocHeadingConfig(
                            TextStyle(
                                fontSize: 16,
                                color: isCurrentToc ? Colors.blue : null),
                            data.toc.node.headingConfig.tag));
                    final child = ListTile(
                      title: Container(
                        margin: EdgeInsets.only(
                            left: 20.0 *
                                (headingTag2Level[node.headingConfig.tag] ??
                                    1)),
                        child: ProxyRichText(node.build()),
                      ),
                      onTap: () {
                        controller.tocController.jumpToIndex(data.toc.widgetIndex);
                        data.refreshIndexCallback.call(data.index);
                      },
                    );
                    return wrapByAutoScroll(data.index, child, data.);
                  },
                )),

我想自定义TocItem,然后把默认实现代码复制出来修改时,发现data里面缺少一个scrollController。样式可以改,但是自动滑动定位还是得保留,你说呢?

zhouzhuo810 commented 8 months ago

wrapByAutoScroll的第三个参数

zhouzhuo810 commented 8 months ago

另外 _TocHeadingConfig 希望可以开放出来,去掉下划线,不然开发者得重新定义一个一模一样的

asjqkkkk commented 8 months ago

@zhouzhuo810 你好,是这样的,TOC相关的代码当时写的比较粗糙,之前有打算过取改造这一块的代码,不过最近时间不够充裕,并且还没想好怎么动手,所以短时间内应该不会去处理这个事情

当然,如果方便并且有意愿的话,你也可以尝试提交相关pull request来处理这个问题