likes
comments
collection
share

UME: 设备信息获取及StringBuffer

作者站长头像
站长
· 阅读数 2

功能查看

今天功能比较简单,当我们点击device Info时会弹出当前设备信息

UME: 设备信息获取及StringBuffer

源码查看

今天的代码在flutter_ume_kit_device包中,其中有个文件夹device_info,代码在device_info_panel.dart中,其中使用到官方的dart类package:device_info/device_info.dart,改类中包含iOS和安卓的设备信息,区分平台拿到设备信息,重新组装了一下deviceinfo信息,并将所有信息拼接成了stringbuffer


void _getDeviceInfo() async {
  DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
  Map dataMap = Map();
  if (widget.platform.isAndroid) {
    AndroidDeviceInfo androidDeviceInfo = await deviceInfo.androidInfo;
    dataMap = _readAndroidBuildData(androidDeviceInfo);
  } else if (widget.platform.isIOS) {
    IosDeviceInfo iosDeviceInfo = await deviceInfo.iosInfo;
    dataMap = _readIosDeviceInfo(iosDeviceInfo);
  }
  StringBuffer buffer = StringBuffer();
  dataMap.forEach((k, v) {
    buffer.write('$k:  $v\n');
  });
  _content = buffer.toString();
  setState(() {});
}

今天的主要代码就这么多, 其他的关于UI布局方面的代码就不做过多的解释了

StringBuffer

在对info处理时使用了StringBuffer,相信对Java、Android开发来说并不陌生,但对iOS开发者来说就很陌生

在Java中的字符串处理分为三种String、StringBuffer、StringBuilder,关于StringBuilder在dart中并没有对应的方法所以就不多解释了,主要看一下String、StringBuffer

String相信大家都知道用法,那StringBuffer又有什么不同呢,其实StringBuffer就是一个可变的字符串,任何对String的改变都会产生一个新的对象,而StringBuffer是个可变字符串,当对它进行操作时,不会产生新的对象,所以在上述方法中对字符串进行操作是选用的是StringBuffer

StringBuffer buffer = StringBuffer(); dataMap.forEach((k, v) { buffer.write('$k: $v\n'); }); _content = buffer.toString();

结语

好了今天的源码查看就到这了, 今天将是我们UME系列的最后一期的,如果还有什么想看的源码请在下方评论,我们一起看源码,共同学习

作为Flutter届的一个小学生,希望大家多多指教,有问题的地方一起讨论