asjqkkkk / markdown_widget

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

dark模式如何修改list的marker颜色以及字体颜色? #141

Closed FairyWorld closed 8 months ago

FairyWorld commented 9 months ago

Describe the bug 我的app有个类似微信的聊天窗口,发送消息和接收消息都是md。我尝试通过自己的isSender字段来给发送消息和接收的消息展示light和dark模式的markdown_widget,markdown_widget用的MarkdownGenerator直接构建的。发现使用dark模式字体颜色还是黑色,list的marker也是黑色的字体。现在只能每一个config都替换掉颜色。

final c = color ?? theme.textTheme.titleLarge?.color ?? Colors.black; 我看到getDefaultMarker这个默认用的是_UlMarker获取的颜色,color默认又是parentStyle?.color,请问如何从外部修改parent节点的style的color

To Reproduce Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior A clear and concise description of what you expected to happen.

Screenshots If applicable, add screenshots to help explain your problem.

Environment(please complete the following information): Please use flutter doctor -v to show your flutter environment, and add your markdown_widget version too

Platform Mobile,android

Source data

final config =
        _isISend ? MarkdownConfig.darkConfig : MarkdownConfig.darkConfig;
MarkdownGenerator(
            linesMargin: EdgeInsets.all(0),
            config: config
            ])).buildWidgets()
asjqkkkk commented 9 months ago

@FairyWorld 你好,比较简单的方法可以参考这个

            final config = isDark
                ? MarkdownConfig.darkConfig
                : MarkdownConfig.defaultConfig;
            final codeWrapper =
                (child, text) => CodeWrapperWidget(child: child, text: text);
            return MarkdownWidget(
                data: data!,
                config: config.copy(configs: [
                  isDark
                      ? PreConfig.darkConfig.copy(wrapper: codeWrapper)
                      : PreConfig().copy(wrapper: codeWrapper)
                ]));

或者也可以通过在 MarkdownConfig中传入ListConfig,在 ListConfig里面自定义你的Marker对象

FairyWorld commented 9 months ago

@FairyWorld 你好,比较简单的方法可以参考这个

            final config = isDark
                ? MarkdownConfig.darkConfig
                : MarkdownConfig.defaultConfig;
            final codeWrapper =
                (child, text) => CodeWrapperWidget(child: child, text: text);
            return MarkdownWidget(
                data: data!,
                config: config.copy(configs: [
                  isDark
                      ? PreConfig.darkConfig.copy(wrapper: codeWrapper)
                      : PreConfig().copy(wrapper: codeWrapper)
                ]));

或者也可以通过在 MarkdownConfig中传入ListConfig,在 ListConfig里面自定义你的Marker对象

可以了,用getDefaultMarker改了下参数。还有一个问题是markdown_widget通过pub.dev可以安装吗?我一开始使用官方源即使开了科学上网也安装不了,一直异常退出,后面改用pub.flutter-io.cn就可以了,但是其他插件用官方源是可以安装的。不知道是不是安装方式不对这个原因导致的,我用vscode开发flutter,使用markdown_widget插件的所有地方都会找不到任何暴露的变量一堆红色警告,这个是vscode的警告,实际上在运行和打包时是可以找到的,我尝试清空flutter和vscode缓存还是会出现找不到变量的情况,使用markdown_widget每次必须手动查看github原来来找到使用方式,没有办法跳转到markdown_widget变量的定义代码。目前因为flutter用的是3.7.12,dart2.19.6,只能使用2.2.0的markdown_widget. image image

asjqkkkk commented 9 months ago

@FairyWorld 你好,比较简单的方法可以参考这个

            final config = isDark
                ? MarkdownConfig.darkConfig
                : MarkdownConfig.defaultConfig;
            final codeWrapper =
                (child, text) => CodeWrapperWidget(child: child, text: text);
            return MarkdownWidget(
                data: data!,
                config: config.copy(configs: [
                  isDark
                      ? PreConfig.darkConfig.copy(wrapper: codeWrapper)
                      : PreConfig().copy(wrapper: codeWrapper)
                ]));

或者也可以通过在 MarkdownConfig中传入ListConfig,在 ListConfig里面自定义你的Marker对象

可以了,用getDefaultMarker改了下参数。还有一个问题是markdown_widget通过pub.dev可以安装吗?我一开始使用官方源即使开了科学上网也安装不了,一直异常退出,后面改用pub.flutter-io.cn就可以了,但是其他插件用官方源是可以安装的。不知道是不是安装方式不对这个原因导致的,我用vscode开发flutter,使用markdown_widget插件的所有地方都会找不到任何暴露的变量一堆红色警告,这个是vscode的警告,实际上在运行和打包时是可以找到的,我尝试清空flutter和vscode缓存还是会出现找不到变量的情况,使用markdown_widget每次必须手动查看github原来来找到使用方式,没有办法跳转到markdown_widget变量的定义代码。目前因为flutter用的是3.7.12,dart2.19.6,只能使用2.2.0的markdown_widget. image image

你好,这个问题主要是因为你的flutter pub源之前没有更换为cn的源,所以会出现pub get失败的情况,然后markdown_widget不同的版本对于flutter的版本也是有要求的,其中新版本会有一些破坏性的修改,这个可能没有办法解决,除非升级flutter版本