温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Flutter单例怎么实现

发布时间:2021-12-02 17:21:51 来源:亿速云 阅读:286 作者:iii 栏目:开发技术

本篇内容主要讲解“Flutter单例怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter单例怎么实现”吧!

    Flutter(able) 的单例模式

    一般来说,要在代码中使用单例模式,结构上会有下面这些约定俗成的要求:

    • 单例类(Singleton)中包含一个引用自身类的静态属性实例(instance),且能自行创建这个实例。

    • 该实例只能通过静态方法 getInstance() 访问。

    • 类构造函数通常没有参数,且被标记为私有,确保不能从类外部实例化该类。

    Flutter单例怎么实现

    回顾iOS,单例的写法如下:

    static JXWaitingView *shared;
    
    +(JXWaitingView*)sharedInstance{
      static dispatch_once_t onceToken;
      dispatch_once(&onceToken, ^{
          shared=[[JXWaitingView alloc]initWithTitle:nil];
      });
      return shared;
    }

    其目的是通过dispatch_once来控制【初始化方法】只会执行一次,然后用static修饰的对象来接收并返回它。所以核心是只会执行一次初始化。

    创建单例

    创建单例的案例

    class Student {
      String? name;
      int? age;
      //构造方法
      Student({this.name, this.age});
    
      // 单例方法
      static Student? _dioInstance;
      static Student instanceSingleStudent() {
        if (_dioInstance == null) {
          _dioInstance = Student();
        }
        return _dioInstance!;
      }
    }

    测试单例效果

    测试一

    import 'package:flutter_async_programming/Student.dart';
    
    void main() {
      Student studentA = Student.instanceSingleStudent();
      studentA.name = "张三";
      Student studentB = Student.instanceSingleStudent();
      print('studentA姓名是${studentA.name}');
      print('studentB姓名是${studentB.name}');
    }

    运行效果

    Flutter单例怎么实现

    测试二

    import 'package:flutter_async_programming/Student.dart';
    
    void main() {
      Student studentA = Student.instanceSingleStudent();
      studentA.name = "张三";
      Student studentB = Student.instanceSingleStudent();
      studentB.name = "李四";
      print('studentA姓名是${studentA.name}');
      print('studentB姓名是${studentB.name}');
    }

    运行效果

    Flutter单例怎么实现

    到此,相信大家对“Flutter单例怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI