Flutter单例怎么实现

本篇内容主要讲解“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单例怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!