热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于程序员:Flutter-最佳实践-01

Flutter最佳实际-01原文[链接]前言作者把工作中的教训做了列举,这是第一局部,继续更新。注释1.占位PlaceholderWidget应用SizedBox而不是Containe

Flutter 最佳实际 – 01

原文 https://vipinvijayannair.medi…

前言

作者把工作中的教训做了列举,这是第一局部,继续更新。

注释

1. 占位 Placeholder Widget

应用 SizedBox 而不是 Container 作为占位符 widget 。

看看上面的用例

return _loaded ? Container() : YourWidget();

SizedBox 是一个常量构造函数,它创立一个固定大小的框。宽度和高度参数能够为空,以批示不应在相应的维度中束缚盒子的大小。

因而,在实现占位符时,应该应用 SizedBox 而不是 Container。

return _loaded ? SizedBox() : YourWidget();

更好的抉择

return _loaded ? SizedBox.shrink() : YourWidget();

2. 定义主题 Theme

定义应用程序的主题以及一个优先级,以防止在将来更新扭转主题的头痛,设置主题必定是凌乱的,但一次性工作。让你的设计师分享所有与主题相干的数据,比方色彩、字体大小和分量。

MaterialApp(

  title: appName,

  theme: ThemeData(

    // Define the default brightness and colors.
    brightness: Brightness.dark,



    // You can add the color from the separate
    // class here as well to maintain it well.

    primaryColor: Colors.lightBlue[800],    // Define the default font family.
    fontFamily: 'Georgia',    // Define the default `TextTheme`.
    // Use this to specify the default
    // text styling for headlines, titles, bodies of text, and more.
    textTheme: const TextTheme(

      headline1: TextStyle(

        fontSize: 72.0,

        fontWeight: FontWeight.bold,

    ),

    headline6: TextStyle(

        fontSize: 36.0,

        fontStyle: FontStyle.italic

    ),

    bodyText2: TextStyle(

        fontSize: 14.0,

        fontFamily: 'Hind',

    ),

    ),

  ),

  home: const MyHomePage(

    title: appName,

  ),

);

您能够做更多的主题,这是定义您的自定义 TextField,卡片,底部导航栏主题一次,并应用它间接在应用程序。

class AppTheme {

  AppTheme();

  static AppTheme? _current;

  // ignore: prefer_constructors_over_static_methods

  static AppTheme get current {

    _current ??= AppTheme();
    return _current!;
  }


  static ThemeData? lightTheme = ThemeData(

    scaffoldBackgroundColor: AppColors.screenBackground,

    primaryColor: AppColors.blue,

    colorScheme: const ColorScheme.light(secondary: Colors.white),

    cardColor: Colors.white,

    floatingActionButtonTheme: const FloatingActionButtonThemeData(

      backgroundColor: AppColors.blue,

    ),

}

3. 用 if 代替三元运算符

让咱们看看上面的例子

三目运算

Row(
  children: [
    Text("Hello Flutter"),
    Platform.isIOS ? Text("iPhone") : SizeBox(),
  ]
);

应用 if

Row(
  children: [
    Text("Hello Flutter"),
    if (Platform.isIOS) Text("iPhone"),
  ]
);

也能够将其用于 widget 数组

Row(
  children: [
    Text("Hello Flutter"),
    if (Platform.isIOS) ...[
      Text("iPhone")
      Text("MacBook")
    ],
  ]
);

4. 尽可能应用 const widget

在这里,TitleWidget 不会在每次构建时都更改,因而最好将其设置为常量 widget 。

劣势: 更快的构建,因为在构建过程中 TitleWidget 不会扭转,所以将在构建中跳过它。

class MyWidget extends StatelessWidget {

  const MyWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisSize: MainAxisSize.min,
        children: const [
          TitleWidget(),
        ],
      ),
    );
  }
}

class TitleWidget extends StatelessWidget {

  const TitleWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Padding(
      padding: EdgeInsets.all(10),
      child: Text('Home'),
    );
  }
}

5. 命名规定 Naming Conventions

类、枚举、类型定义和扩展名应该在 UpperCamelCase 中。

class MyWidget { ... }

enum Choice { .. }

typedef Predicate = bool Function(T value);

extension ItemList on List { ... }

库、包、目录和源文件的名称应该放在 snake_case(lowercase_with_underscores) 中。

library firebase_dynamic_links;
import 'my_lib/my_lib.dart';

变量、常量、参数和命名参数应该在 lowerCamelCase 中。

var item;

const cost = 3.14;
final urlScheme = RegExp('^([a-z]+):');

void sum(int price) {
 // ...
}

结束语

如果本文对你有帮忙,请转发让更多的敌人浏览。

兴许这个操作只有你 3 秒钟,对我来说是一个激励,感激。

祝你有一个美妙的一天~


© 猫哥

  • 微信 ducafecat
  • https://wiki.ducafecat.tech
  • https://video.ducafecat.tech

本文由mdnice多平台公布


推荐阅读
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
author-avatar
loloyoyo555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有