<code>class Manager{ //单例变量 static Manager? _instance; //命名构造函数 Manager._internal(){ //初始化 } //创建实例 static Manager _getInstance(){ _instance ??= Manager._internal(); return _instance!; } //无参构造函数也是从_getInstance()获得实例 factory Manager() => _getInstance(); //对外暴露获取实例接口 static Manager get instance => _getInstance(); } </code>
界面:
<code>import 'package:app_bili/factory_singleton_instance.dart'; import 'package:flutter/material.dart'; main()=>runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( appBar: AppBar( title: const Text("Factory"), centerTitle: true, ), body: const MyHomePage() ), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({Key? key}) : super(key: key); @override State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Center( child: ElevatedButton( onPressed: (){ Manager manager1 = Manager(); Manager? manager2 = Manager.instance; Manager manager3 = Manager(); print(identical(manager1, manager2)); //true print(identical(manager1, manager3)); //true }, child: const Text("点击") ), ); } }</code>
文章评论