范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

为什么我认为Flutter是移动应用程序开发的未来

  但是最近,我了解了Flutter,并决定再次开发移动应用程序。我立即爱上了它,因为它使开发多平台应用程序变得非常有趣。自了解以来,我已经创建了一个应用程序和一个使用它的库。Flutter似乎是向前迈出的非常有希望的一步,我想解释一些为什么我相信这一点的不同原因。由Dart提供支持
  Flutter使用Google开发的Dart语言。如果您以前使用过Java,则您将非常熟悉Dart的语法,因为它们非常相似。除了语法之外,Dart是一种完全不同的语言。
  我不会深入讨论Dart,因为它有点超出范围,但我想讨论一下我认为最有用的功能之一。此功能支持异步操作。Dart不仅支持它,而且使其异常容易。
  如果您正在执行IO或其他耗时的操作(例如查询数据库),那么很可能会在所有Flutter应用程序中使用此功能。如果没有异步操作,任何耗时的操作都将导致程序冻结直到完成。为防止这种情况,Dart为我们提供了async和await关键字,它们使我们的程序可以在等待这些较长的操作完成时继续执行。
  让我们看几个例子:一个没有异步操作,一个有异步操作。// Without asynchronous operations import "dart:async";  main() {     longOperation();     printSomething(); }  longOperation() {     Duration delay = Duration(seconds: 3);     Future.delayed(delay);     print("Waited 3 seconds to print this and blocked execution."); }  printSomething() {     print("That sure took a while!"); }并输出:Waited 3 seconds to print this and blocked execution. That sure took a while!
  这不理想。没有人愿意使用在执行长时间操作时冻结的应用程序。因此,让我们对其进行一些修改,并使用asyncand await关键字。// With asynchronous operations import "dart:async";  main() {     longOperation();     printSomething(); }  Future longOperation() async {     var retVal = await runLongOperation();      print(retVal); }  const retString = "Waited 3 seconds to return this without blocking execution."; Duration delay = Duration(seconds: 3);  Future runLongOperation() => Future.delayed(delay, () => retString);  printSomething() {     print("I printed right away!"); }
  并再次输出:I printed right away! Waited 3 seconds to return this without blocking execution.
  由于异步操作,我们能够执行需要一段时间才能完成的代码,而不会阻塞其余代码的执行。编写一次,在Android和iOS上运行
  考虑到您需要为Android和iOS使用不同的代码库,开发移动应用程序可能会花费很多时间。除非您使用Flutter之类的SDK,否则您只有一个代码库,可以为两个操作系统构建应用程序。不仅如此,您还可以在本地完全运行它们。这就意味着诸如滚动和导航之类的功能,就像它们对所使用的操作系统一样。
  为了保持简单性这一主题,只要您运行的设备或模拟器,Flutter都可以使创建和运行应用程序的过程像单击按钮一样简单。UI开发
  UI开发是我几乎从未期待过的事情之一。我更多地是后端开发人员,因此,在处理严重依赖它的东西时,我想要简单的东西。这是Flutter在我眼中闪耀的地方。
  通过将不同的小部件组合在一起并对其进行修改以适合您的应用程序外观来创建UI。您几乎完全可以控制这些小部件的显示方式,因此始终可以得到所需的确切信息。对于布局的UI,你有小部件,如Row,Column和Container。对于内容,您有诸如Text和的小部件RaisedButton。这只是Flutter提供的小部件中的几个,还有更多。使用这些小部件,我们可以构建一个非常简单的UI:@override Widget build(BuildContext context) {     return Scaffold(         appBar: AppBar(             title: Text("Flutter App"),             centerTitle: true,             elevation: 0,         ),         body: Row(             mainAxisAlignment: MainAxisAlignment.center,             children: [                 Column(                     mainAxisAlignment: MainAxisAlignment.center,                     children: [                         Container(                             child: Text("Some text"),                         ),                         Container(                             child: RaisedButton(                                 onPressed: () {                                     // Do something on press                                 },                                 child: Text("PRESS ME"),                             ),                         ),                     ],                 ),             ],         ),     ); }
  Flutter拥有更多技巧,可以轻松设置主题主题。您可以手动更改字体,颜色,然后逐一查找所有内容,但这花费的时间太长。相反,Flutter为我们提供了一种称谓的东西ThemeData,它允许我们设置颜色,字体,输入字段等的值。此功能非常适合使应用程序外观保持一致。theme: ThemeData(     brightness: Brightness.dark,     canvasColor: Colors.grey[900],     primarySwatch: Colors.teal,     primaryColor: Colors.teal[500],     fontFamily: "Helvetica",     primaryTextTheme: Typography.whiteCupertino.copyWith(         display4: TextStyle(             color: Colors.white,             fontSize: 36,         ),     ), ),
  借助此工具ThemeData,我们可以设置应用程序的颜色,字体系列和某些文本样式。除文本样式外,所有内容都会自动应用到整个应用程序中。必须为每个文本小部件手动设置文本样式,但这仍然很简单:child: Text(     "Some text",     style: Theme.of(context).primaryTextTheme.display4, ),
  为了使事情变得更加高效,Flutter可以热重新加载应用程序,因此您无需在每次更改UI时都重新启动它。现在,您可以进行更改,将其保存,然后在一秒钟左右的时间内看到更改。后端开发
  如今,大多数应用程序都依赖某种数据,这些数据需要存储在某个地方,以便以后显示和使用。因此,在使用新的SDK(例如Flutter)创建应用程序时,请记住这一点,这一点很重要。
  再说一次,Flutter应用程序是使用Dart制作的,而Dart在后端开发方面很棒。在本文中,我已经谈论了很多关于简单性的问题,使用Dart和Flutter进行后端开发也不例外。对于初学者和专家而言,创建数据驱动的应用程序非常简单,但这种简单性绝不等于缺乏质量。
  要将其与上一节联系起来,可以使用库,因此您可以使用自己选择的数据库。使用该sqflite库,我们可以相当快地启动并运行SQLite数据库。而且由于有了单例,我们几乎可以在任何地方访问数据库并查询它,而无需每次都重新创建对象。class DBProvider {     // Singleton     DBProvider._();      // Static object to provide us access from practically anywhere     static final DBProvider db = DBProvider._();     Database _database;      Future get database async {         if (_database != null) {             return _database;         }          _database = await initDB();         return _database;     }      initDB() async {         // Retrieve your app"s directory, then create a path to a database for your app.         Directory documentsDir = await getApplicationDocumentsDirectory();         String path = join(documentsDir.path, "money_clip.db");          return await openDatabase(path, version: 1, onOpen: (db) async {             // Do something when the database is opened         }, onCreate: (Database db, int version) async {             // Do something, such as creating tables, when the database is first created.             // If the database already exists, this will not be called.         }     } }
  从数据库检索数据后,可以使用模型将其转换为对象。或者,如果要将对象存储在数据库中,则可以使用相同的模型将其转换为JSON。class User {     int id;     String name;      User({         this.id,         this.name,     });      factory User.fromJson(Map json) => new User(         id: json["id"],         name: json["name"],     );      Map toJson() => {         "id": id,         "name": name,     }; }
  如果没有将数据显示给用户的方式,这些数据并没有那么有用。这是Flutter附带诸如FutureBuilder或的小部件的地方StreamBuilder。如果您想更深入地了解如何使用Flutter,SQLite和其他技术来创建数据驱动的应用程序,使用Flutter,可能性几乎是无限的,因此甚至可以轻松创建超级扩展的应用程序。如果您开发移动应用程序并且还没有尝试Flutter,我强烈建议您这样做,因为我相信您也会爱上它。在使用Flutter几个月后,我认为可以肯定地说这是移动开发的未来。如果没有,那绝对是朝正确方向迈出的一步。

全国五一劳动奖评选结果出炉新就业形态劳动者为何备受关注?中国网科技4月29日讯(记者杨月月)五一前夕,中华全国总工会公布了今年全国五一劳动奖和全国工人先锋号评选表彰结果,一批货车司机网约车司机快递员外卖配送员等新就业形态劳动者和集体获得我国科学家设计构建了稳定自调控的微生物共培养体系随着合成生物学的发展,微生物共培养已成为化学品生物合成的新方法。应用微生物共培养技术不仅可以减轻代谢负担,实现复杂化合物的合成,还可以充分发挥不同物种的优势和能力,利用低劣生物质以国际最新研究到2070年气候变化将致1。5万次跨物种病毒传播中新网北京4月29日电(记者孙自法)国际著名学术期刊自然最新在线发表一篇流行病学论文指出,在气候变化的推动下,预计到2070年至少会发生1。5万次新的跨物种病毒传播。这些增加的病毒python之多态继承重写篇codingUTF8classAnimaldefrun(self)print(动物会跑)defsleep(self)print(动物会睡觉)classDogdefrun(self)从1399元降至949元,诺基亚刘海全面屏手机沦为百元机已无人问津经常关注手机行业的人应该都能发现,到了2019年之后,手机行业内部的竞争相比2018年不仅仅没有缓解,反而更加的激烈了,在这种情况之下,许多人都预感2019年会有多个手机品牌被激烈任正非讲话提醒华为HR别把自己当成了权力部门在任正非讲话中,任正非要求华为HR搭建好服务平台,提供专业的方法,别把自己当成了权力部门。3月29日消息,华为心声社区昨天登载了任正非在3月9日举行的华为总干部部务虚会上讲话的全文除了华为,还有哪些中国公司在争霸全球?现在中国在全球各地,遍布最多的企业还是做工程的企业。中铁中建隧道局公司电网移动通讯设施。毕竟中国早就被外国人评价为基建狂魔了吧,哈哈。其实,无论是国内的华为手机外销还是直接出国务工vivo首款带鱼屏手机?升降式摄像头太过惊艳?价格感人?2019旗舰新机可以说是屏幕的形态众多,比如像挖孔屏全面屏,刘海屏水滴屏等等。当然这些屏幕的推出都是为了提高手机的屏占比,而在今年的MWC的大会上,索尼移动发布了一款新机,该机的屏被巨头们群殴的滴滴作者鹿凯来源野马财经柳青哭了,程维瘦了,滴滴颤抖了。能让阿里腾讯这两大对手联手合作,同时还有一汽东风长安三大汽车公司参与,这个项目必然不简单。2000亿的共享出行市场,再次传来进攻功率6马力,续航80km,特斯拉也得叫它爷爷特斯拉作为当今车坛电动汽车领域的领头羊,在车迷中可以说无人不知无人不晓,但很少有人知道上个世纪一款量产的电动车。上个世纪70年代的石油危机让习惯了太排量的欧美的汽车厂商非常难受,甚iPhone这个功能都没用过,太浪费在iPhone的控制中心里,有这么一个开关,许多人压根都没用过。那么它到底是什么呢?其实就是勿扰模式啦,开启这个功能后手机就会进入勿扰模式。在此模式下,关闭iphone屏幕后,有电
天猫京东又要开撕,iPhone6s价格诱人!从去年开始,天猫和京东的手机价格战就没有停止过,时不时的就会来一发,而其中又以iPhone6s为主。这不笔者今天不下心看到了天猫和京东上6s(16g全网通A1700)的价格,目测两魅蓝3S图赏2016年6月13日,魅族发布了魅蓝系列的新品魅蓝3S,准确的来说是魅蓝3的升级版,在魅蓝3的基础上将电池的容量提升到了3020mAh,并且机身的外壳变为了金属。当然还有一些其他的魅族16Xs摄影带着魅族16Xs游西湖,赏荷花,望美人,尝美食俗话说上有天堂,下有苏杭。一年四季,西湖的美不尽相同。而最近是荷花盛开的季节,也是赏荷的最佳时节,趁着周末,带上魅族16Xs一起游西湖,赏荷花,望美人,尝美食,岂不快哉!今天我就带URBANFUN粉丝设计03带你体验现场的震撼前言(Preface)在耳机到手后,就迫不及待的进行了开箱。并为了之后可以体验耳机的最佳性能,对耳机进行了大约100小时的煲机!设备工具iPhone6s,红米note,Sony线性一款有态度的微单自拍杆SPGADGETS体验之谈虽然现在手机的拍照效果越来越好,但对于摄影爱好者来说,手机和微单(或单反)比起来,人们更愿意选择微单来作为拍摄工具。而自拍杆也似乎成为了微单不可或缺的配件,笔者最近有幸拿到了京东百艾瑞直播分享课VUCA视角下保险企业如何在困境中破局前行现阶段,大多数的金融都面临着复杂模糊不确定易变的经营环境,金融政策市场需求以及金融科技的变化逐渐加剧了金融企业的经营风险,保险行业在此阶段下,迫切需要精准确定行业痛点,从而找到适合2020年中国成人英语市场研究报告核心摘要概念界定成人英语包括以提高各类英语考试的应试能力为主的应试英语培训和以培养英语听说读写应用能力为主的实用英语培训。市场规模2019年成人英语市场规模953亿,其中应试英语规2020年中国游戏直播行业研究报告核心摘要发展背景游戏直播版权规范化取得实质性突破,广东高院发布司法规范对游戏直播版权保护及主播违约给出审判指引。市场规模2019年中国独立游戏直播平台市场规模达到208亿元。整体市2020年中国大语文行业研究报告核心摘要发展背景新高考背景下,语文学科在高利害考试中的权重得到提升,语文培训需求迅速释放新课标背景下,语文教师亟待提升业务能力,校内外集体教研推动产品供给多元化新教材背景下,以传统2020年中国家庭医疗健康服务消费白皮书核心摘要行业部分我国目前面临两大社会难题,一是总体人均医疗资源不足,2019年千人医生数仅1。79人,二是老龄化问题突出,2019年65岁及以上人口占比高达12。6。老中青都面临着360全屋路由子母装,轻松实现WiFi信号全覆盖对于大户型的房屋,如何让WiFi信号全覆盖是一个无法避免的问题。就拿我个人来说,我家的房子面积大约在120左右,家中的无线路由器通常放置在客厅中,虽说目前的路由器的无线速率为210