Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SmartDialog.showAttach() 在手机上会闪烁一下 #82

Closed
wh19990906 opened this issue Oct 26, 2022 · 8 comments
Closed

SmartDialog.showAttach() 在手机上会闪烁一下 #82

wh19990906 opened this issue Oct 26, 2022 · 8 comments
Assignees
Labels
enhancement New feature or request

Comments

@wh19990906
Copy link

版本信息

  • Flutter版本:[举例:v2.10.4]
  • flutter_smart_dialog版本:[举例:v3.4.1]

描述bug/需求

SmartDialog.showAttach() 在手机上会闪烁一下

问题demo

SmartDialog.showAttach(
        targetContext: context,
        highlightBuilder: (Offset targetOffset, Size targetSize) {
          return Positioned(
            top: 0,
            child: Container(
              width: targetSize.width,
              height: targetSize.height,
              color: Colors.white,
            ),
          );
        },
        builder: (_) {
          return Container(
            width: 100,
            height: 100,
            color: Colors.red,
          );
        });
@wh19990906
Copy link
Author

2022-10-26.4.21.42.mov

看起来像是高亮highlightBuilder,出现的时机比maskColor要慢一点

@xdd666t
Copy link
Member

xdd666t commented Oct 26, 2022

嗯嗯,这俩天我会查查看

xdd666t added a commit that referenced this issue Oct 26, 2022
@xdd666t
Copy link
Member

xdd666t commented Oct 27, 2022

  • 暂时采用使用高亮功能,关闭遮罩动画的方式解决,可以更新版本尝试下
# flutter 3.x
dependencies:
  flutter_smart_dialog: ^4.6.2

# flutter 2.x
dependencies:
  flutter_smart_dialog: ^4.0.9+9
  • 试了多个版本,可以验证这个bug应该是flutter sdk的问题

    • ColorFiltered和淡入淡出动画(FadeTransition,AnimatedOpacity)存在冲突
    • flutter 2.10.5和最新版本flutter 3.3.5能稳定复现,flutter 3.0.5版本则不存在这个问题
  • 下述代码,可以稳定复现俩个冲突的bug

void main() => runApp(TestApp());

class TestApp extends StatelessWidget {
  const TestApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Container(
        color: Colors.white,
        alignment: Alignment.center,
        child: Builder(builder: (ctx) {
          return ElevatedButton(
            onPressed: () {
              showDialog(
                context: ctx,
                barrierColor: Colors.transparent,
                builder: (_) => TestHighlight(),
              );
            },
            child: Text('test highlight'),
          );
        }),
      ),
    );
  }
}

class TestHighlight extends StatefulWidget {
  const TestHighlight({Key? key}) : super(key: key);

  @override
  State<TestHighlight> createState() => _TestHighlightState();
}

class _TestHighlightState extends State<TestHighlight>
    with TickerProviderStateMixin {
  late AnimationController _controller;

  @override
  void initState() {
    _controller = AnimationController(
      vsync: this,
      duration: Duration(milliseconds: 300),
    );
    _controller.forward();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {

    return FadeTransition(
      opacity: CurvedAnimation(parent: _controller, curve: Curves.linear),
      child: ColorFiltered(
        colorFilter: ColorFilter.mode(
          // 遮罩
          Colors.black.withOpacity(0.6),
          BlendMode.srcOut,
        ),
        child: Stack(children: [
          Container(
            decoration: BoxDecoration(
              color: Colors.white,
              backgroundBlendMode: BlendMode.dstOut,
            ),
          ),

          //highlight
          Container(height: 100, width: 600, color: Colors.black),
        ]),
      ),
    );
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}

@fluttercandies fluttercandies deleted a comment from wh19990906 Oct 27, 2022
@wh19990906
Copy link
Author

flutter 3.x

dependencies:
flutter_smart_dialog: ^4.6.2

升级4.6.2 问题解决了

@xdd666t xdd666t closed this as completed Oct 28, 2022
@xdd666t xdd666t added the enhancement New feature or request label Oct 31, 2022
@xdd666t xdd666t self-assigned this Oct 31, 2022
@mny459
Copy link

mny459 commented Nov 27, 2022

Flutter 3.3.9
flutter_smart_dialog: ^4.7.1

问题依然存在

@xdd666t
Copy link
Member

xdd666t commented Nov 27, 2022

Flutter 3.3.9 flutter_smart_dialog: ^4.7.1

问题依然存在

这个关闭闪烁动画的特性移到全局config中了,你可以看看你的attachConfig的全局配置

image

@mny459
Copy link

mny459 commented Nov 27, 2022

是说需要加上下面这个配置是吗,我单独给 showAttach 方法配置了,但是效果不是很明显
SmartNonAnimationType.highlightMask_nonAnimation

@qflbai
Copy link

qflbai commented Sep 25, 2023

是说需要加上下面这个配置是吗,我单独给 showAttach 方法配置了,但是效果不是很明显 SmartNonAnimationType.highlightMask_nonAnimation

老哥决绝了没

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants