美文网首页
Flutter 根据需求主动重绘整体UI树结构

Flutter 根据需求主动重绘整体UI树结构

作者: 老中医167788 | 来源:发表于2023-02-22 14:56 被阅读0次

    类代码

    app_builder.dart

    // 老中医2023-02-23
    import 'package:flutter/material.dart';
    
    class AppBuilder extends StatefulWidget {
      final Function(BuildContext context,bool reload) builder;
    
      const AppBuilder({Key? key,required this.builder}) : super(key: key);
    
      @override
      AppBuilderState createState() => new AppBuilderState();
    
      static AppBuilderState of(BuildContext context) {
        return context.findAncestorStateOfType<AppBuilderState>()!;
      }
    }
    
    class AppBuilderState extends State<AppBuilder> {
      var show = true;
      var reload = false;
    
      @override
      Widget build(BuildContext context) {
        return show ? widget.builder(context,reload) : SizedBox();
      }
    
      Future<void> rebuild() async {
        reload = true;
        setState((){
          show = false;
        });
        await Future.delayed(const Duration(milliseconds:100));
        setState((){
          show = true;
        });
      }
    }
    

    使用方法

    在你的UI树的根部如下定义

    Widget build(BuildContext context) {
        return AppBuilder(
          // reload参数是 应用程序是否第一次绘制 第一次为false 第二次为true
          builder:(context,reload){
            return ...;
          }
        );
      }
    

    在需要重绘时调用此方法

    AppBuilder.of(Get.context!).rebuild();
    

    相关文章

      网友评论

          本文标题:Flutter 根据需求主动重绘整体UI树结构

          本文链接:https://www.haomeiwen.com/subject/lkyakdtx.html