首页 > 其他分享 >一统天下 flutter - dart: dart 3 新特性(类相关)

一统天下 flutter - dart: dart 3 新特性(类相关)

时间:2023-09-18 11:23:04浏览次数:60  
标签:flutter 一统天下 extends base 修饰 dart class

源码 https://github.com/webabcd/flutter_demo
作者 webabcd

一统天下 flutter - dart: dart 3 新特性(类相关)

示例如下:

lib\dart\dart3feature2.dart

/*
 * dart 3 新特性(类相关)
 *
 *
 * 升级 dart 需要先在 pubspec.yaml 中做如下配置,然后 flutter upgrade
 * environment:
 *   sdk: ">=3.0.0 <=3.1.2"
 */

import 'package:flutter/material.dart';
import 'package:flutter_demo/helper.dart';

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

  @override
  Widget build(BuildContext context) {

    // mixin - 混入,相关说明参见 class2.dart
    // abstract - 抽象类,不允许实例化,相关说明参见 class2.dart

    // sealed 修饰的类的子类可以通过 switch 选择
    _MySealedClass a = _MyClass3();
    var b = switch(a) {
      _MyClass1()=> '_MyClass1',
      _MyClass2()=> '_MyClass2',
      _MyClass3()=> '_MyClass3',
    };
    log("$b");

    return const MyWidget(text: "dart 3 新特性(类相关)");
  }

}

// final 修饰的类不允许被继承
final class _MyFinalClass {

}

// sealed 修饰的类不允许实例化,且不允许在外部被继承(在同文件中是可以被继承的)
// sealed 修饰的类的子类可以通过 switch 选择
sealed class _MySealedClass {

}
class _MyClass1 extends _MySealedClass {

}
class _MyClass2 extends _MySealedClass {

}
class _MyClass3 extends _MySealedClass {

}

// base 修饰的类只能被 extends 而不能被 implements
// 如果一个类没有用 base 或 interface 修饰,则它既可以被 extends 也可以被 implements(相关说明参见 class2.dart)
base class _MyBaseClass {

}
// 一个类如果 extends 了一个 base 修饰的类,则这个类也必须用 base 修饰
base class _MyClass4 extends _MyBaseClass {

}

// interface 修饰的类只能被 implements 而不能被 extends
// 如果一个类没有用 base 或 interface 修饰,则它既可以被 extends 也可以被 implements(相关说明参见 class2.dart)
interface class _MyInterfaceClass {

}
class _MyClass5 implements _MyInterfaceClass {

}

源码 https://github.com/webabcd/flutter_demo
作者 webabcd

标签:flutter,一统天下,extends,base,修饰,dart,class
From: https://www.cnblogs.com/webabcd/p/flutter_lib_dart_dart3feature2.html

相关文章

  • 一统天下 flutter - 游戏: 俄罗斯方块
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-游戏:俄罗斯方块示例如下:lib\game\tetris\tetris.dart/**俄罗斯方块**使用了flame库,在pubspec.yaml中做如下配置,然后flutterpubget*dependencies:*flame:^1.7.3*......
  • Flutter的SystemUiOverlayStyle类详解
    SystemUiOverlayStyle介绍Flutter中的SystemUiOverlayStyle是一个类,用于控制应用程序的系统UI(用户界面)覆盖样式。它提供了一种定制应用程序状态栏和导航栏外观的方法。SystemUiOverlayStyle的属性详解SystemUiOverlayStyle类有以下属性可以设置:statusBarColor:状态栏的背景颜色......
  • Flutter插件flutter_boost 在android模块中的报红问题解决.
    1,在开发Flutter插件时,打开插件的android项目,准备编写native端的代码时,发现各种报红,代码无法跳转,体验十分不好。就像我下面的截图一样:导入了FlutterBoostflutterBoost源码爆红。但是运行正常。。这说明本身是没有问题的。。分明是没有错误的类都存在。但是就是爆红。。。。可......
  • Android Studio中无法显示main.dart(Flutter项目在Android Studio中显示不全)
    问题描述创建完项目后只出现android文件选择ProjectFiles就会显示整个目录内容设置后......
  • Flutter example01
    import'package:flutter/material.dart';import'package:english_words/english_words.dart';voidmain()=>runApp(MyApp());classMyAppextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){//finalworldP......
  • flutter解析html的图片和链接
    html链接内容如下:"<p><ahref="https://www.hihonor.com/cn/m/notice-14658"rel="nofollow"><imgalt="750.png"src="https://hshop.honorfile.com/pimages/detailImg/2023/08/31/C757CDF3D975230D36F9176D41A90......
  • Flutter中多种状态管理方案
    Flutter中有多种状态管理方案,用于管理应用程序中的状态和数据,以确保应用的可维护性和可扩展性。以下是一些常见的Flutter状态管理方法:setState:这是Flutter中最基本的状态管理方法。在StatefulWidget中,可以使用setState方法来通知Flutter框架,界面需要被重新绘制,以反映状态的变化。......
  • 日常使用vscode开发flutter相关的插件
    简介这里整理了日常使用vscode开发flutter相关的插件,也有部分通用类型的插件Flutter&Dart这2个是flutter官方插件,开发flutter装机必备,不用多说。AwesomeFlutterSnippetsAwesomeFlutterSnippetsisacollectionsnippetsandshortcutsforcommonlyusedFlutterfunctions......
  • Flutter vs Kotlin :哪个更适合 App 开发?
    前言跨平台应用程序框架是开发人员用来为不同框架构建应用程序的工具。与原生平台不同,跨平台框架允许开发人员创建可以在多个平台(包括iOS、Android和Windows)上运行的单个应用程序,只需对开发过程进行少量修改。使用跨平台应用程序有什么好处?跨平台应用程序的显着优势之一是能够覆......
  • 阿里巴巴Flutter开源Kraken初体验
    阿里巴巴Flutter开源Kraken初体验向治洪在知乎工程师​关注他 22人赞同了该文章一、Kraken简介历时3年,阿里巴巴正式开源了基于Flutter的Web渲染引擎项目【北海】。一直以来,大家都在为跨平台开发进行不断的探索与实践,从最早的H5方案到Hybrid方案,以......