【Flutter】Dart的类方法和对象操作符

1. 写在前面

上篇文章中介绍了Dart中的工厂构造&单例对象&初始化列表,那么现在就继续来学习 Dart的类方法和对象操作符。

Flutter

【Flutter】苹果Mac电脑配置flutter开发环境

【Flutter】 Android Studio 安装第三方模拟器—网易MuMu

【Flutter】项目运行报错Failed to find Build Tools revision 29.0.2

【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘

【Flutter】如何新建项目,运行你的第一个 flutter 工程项目

【Flutter】Dart中的var、final 和 const基本使用

【Flutter】Dart数据类型之num

【Flutter】Dart数据类型之String

【Flutter】Dart的数据类型list&Map(数组和字典)

【Flutter】Dart的方法与箭头函数

【Flutter】Dart的方法中的可选参数、方法作为参数传递

【Flutter】Dart中的匿名函数、闭包

【Flutter】Dart中的类和对象

【Flutter】Dart中的构造函数

【Flutter】Dart的工厂构造方法&单例对象&初始化列表

2. 类方法

我们在学习 OC 的时候,有实例方法和类方法,OC 的类方法以加号“+”开头,只能用类名调用,对象不能调用,那么 dart 中的类方法该怎么表示呢?

class StaticClass {
  // 静态属性
  static String name = "reno";
  int height = 180;
  int count = 0;

  //静态方法
  static setName(String name1){
    name = name1;
    return name;
  }
  //实例方法
  int sum(int a) {
  return a + count + height;//实例方法可以访问,非静态成员和静态成员
  }

实例方法可以访问,非静态成员和静态成员,对象方法在 dart 中就是静态方法,在静态方法中不可以访问静态成员属性,也就是实例成员,否则会报错的。

报错信息

具体的报错信息,可以查看Dart Analysis,如下:

语法分析

报错❎:error: Instance members can’t be accessed from a static method

错误:无法从静态方法访问实例成员。

那为什么静态方法不能访问实例成员呢?

仔细想一想,静态方法是通过类名调用的,你类都没有哪里来的实例啊,对吧!所以就不让你访问;但是实例方法的调用,实例肯定是存在的,那么访问实例对象就肯定是可以的。

类方法的调用如下

直接类名调用类方法和静态的属性。
类方法调用

  • 常量的定义
 static const int id = 30061111111888888;

常量就是在常量区,常量只有一份就必须用static来修饰。

  • 对象操作符
var s;
  s = StaticClass();
  print(StaticClass.name);
  s = null;
  print(s?.sum(10));

这里使用是防止出错,因为 sdynamic类型,有可能为空的情况,加就是说可以为空。

  • 对象符合 as

下面这种情况,s是对象类型,但不知道具体类型,所以调用 sum方法报错,那么就需要进行类型的转换了。
报错信息

类型的转换可以使用 as,这是 Swift 一样的意思,如下:

类型转换

哪里需要类型的转换,就在哪里转换。

  • 对象符合 is

还有一种就是 if判断的形式,判断是否是某一种类型

void main() {
  var s = Object();
  s = StaticClass();
  // print((s as StaticClass).sum(10));
  if (s is StaticClass) {
   print(s.sum(10));
  }
}

还有一种对象的操作符点点(..),这个就让人很出乎预料了。
操作符

打印的居然不是方法调用的结果,而是返回的是类本身,这其实就是链式编程。

链式编程
链式编程可以一直点下去,只不过dart这里是两个点,原理都是一样,返回类,继续调用,继续返回继续调用。

3. 写在后面

关注我,更多内容持续输出

🌹 喜欢就点个赞吧👍🌹

🌹 觉得有收获的,可以来一波 收藏+关注,以免你下次找不到我😁🌹

🌹欢迎大家留言交流,批评指正,转发请注明出处,谢谢支持!🌹

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Flutter 中使用 RandomAccessFile 在文件的头部插入一新行可以这样做: 1. 首先,使用 `dart:io` 库中的 `File` 打开文件。 2. 然后,使用 `RandomAccessFile` 的构造函数打开文件并获取一个 `RandomAccessFile` 对象。 3. 使用 `setPosition(int position)` 方法将文件指针设置到文件头部。 4. 使用 `writeString(String string, {Encoding encoding = utf8})` 方法将新行写入文件。 示例代码如下: ``` import 'dart:io'; void main() { // 打开文件 File file = File('my_file.txt'); // 使用 RandomAccessFile 的构造函数打开文件并获取一个 RandomAccessFile 对象 RandomAccessFile raf = file.openSync(mode: FileMode.write); // 将文件指针设置到文件头部 raf.setPosition(0); // 将新行写入文件 raf.writeString('This is a new line.\n', encoding: utf8); } ``` 注意:使用 `RandomAccessFile` 插入新行时,会覆盖原来文件中的内容。如果想要在文件中插入内容而不覆盖原来的内容,可以使用 `dart:convert` 库中的 `LineSplitter` 将文件内容读取出来,然后在内存中操作后再写回文件。 ### 回答2: 在flutter中,要在文件的头部插入一新行,可以使用RandomAccessFile来实现。 首先,我们需要导入dart:io库,然后创建一个RandomAccessFile对象来打开文件。例如,假设我们要操作的文件是"example.txt",我们可以使用下面的代码来打开文件: ```dart import 'dart:io'; void main() { File file = File('example.txt'); RandomAccessFile raf = file.openSync(mode: FileMode.append); } ``` 接下来,我们可以使用RandomAccessFile对象的writeFrom方法来将新行插入到文件的头部。首先,将要插入的新行内容转换为字节数组,然后,使用writeFrom方法将字节数组写入文件。例如,我们要插入的新行内容是"Hello, World!",我们可以使用下面的代码来实现: ```dart import 'dart:io'; void main() { File file = File('example.txt'); RandomAccessFile raf = file.openSync(mode: FileMode.append); String newLine = "Hello, World!\n"; List<int> bytes = utf8.encode(newLine); raf.writeFromSync(bytes); raf.closeSync(); } ``` 这样,新的一行就会被插入到文件的头部。 需要注意的是,在使用RandomAccessFile对象的writeFrom方法写入文件后,记得使用close方法关闭文件,以释放资源。 ### 回答3: 在Flutter中,可以使用RandomAccessFile来进行文件操作。想要在文件的头部插入一新行,可以按照以下步骤进行操作: 1. 使用`import 'dart:io';`引入文件操作所需的包。 2. 使用`File`的`open`方法创建一个`RandomAccessFile`对象,并指定文件的路径和操作模式。例如: ```dart var file = await File('文件路径').open(mode: FileMode.write); var raf = RandomAccessFile(file); ``` 在`open`方法中,`mode`参数用来指定打开文件的模式,`FileMode.write`表示以写入模式打开文件。 3. 使用`raf.setPosition`方法将文件的位置设置为0,即文件的头部位置。例如: ```dart await raf.setPosition(0); ``` 4. 使用`raf.writeString`方法向文件中写入新行内容。例如: ```dart await raf.writeString('新行内容\n'); ``` 在`writeString`方法中,要插入的新行内容需要加上换行符`\n`表示换行。 5. 关闭文件。使用`raf.close`方法关闭`RandomAccessFile`对象和文件。例如: ```dart await raf.close(); ``` 通过以上步骤,就可以使用`RandomAccessFile`在文件的头部插入一新行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡西Sensei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值