使用Java的方式模拟Flutter的Widget实现多层括号嵌套

所属分类: 软件编程 / java 阅读数: 46
收藏 0 赞 0 分享

我已经研究Flutter很长时间了。我就想既然Flutter用的Dart语言,而且括号又是嵌套多层,很多人都表示不是很理解,也不是很喜欢那么多层括号嵌套。其实完全不用担心,既然选择了它,就要接受它,当然是选择原谅它。废话少说,其实Java也是可以实现类似的语法的,下面带领大家作死的尝试一下使用Java模拟Flutter的Widget,欢迎各类开发人员前来观战。

Flutter最重要的是 Widget ,首先我们来写一个类 Widget ,然后有一个 build 函数。如下所示:

Tips: (我是阿韦。我的公众号 Flutter 那些事 ,干货多多,欢迎关注。惦记我的资料,可以与我取得联系。有任何疑问,欢迎在本文后面留言回复。)

public class Widget {

  private BuildContext mContext;

  public Widget build(BuildContext context){
    this.mContext = context;
    return this;
  }
}

接着我们写一个重要的类 BuildContext ,如下所示:

我们直接跳过细节了,这里写的都是核心点。

public class BuildContext {
  public BuildContext(){
  }
}

接下来就是一个关键的类 StatelessWidget ,我们写一个 StatelessWidget 类继承自 Widget ,如下所示:

这里面我们不做任何的逻辑处理。只是先把这个类写出来。

public class StatelessWidget extends Widget{
  @Override
  public Widget build(BuildContext context) {
    return super.build(context);
  }
}

接下来,我们写写一个 Column 类继承自 StatelessWidget ,如下所示:

public class Column extends StatelessWidget {

    Widget[] childrens;
    int width;
    int height;

    public Column(int width, int height, Widget... children) {
      this.width = width;
      this.height = height;
      this.childrens = children;
    }
    @Override
    public Widget build(BuildContext context) {
      return super.build(context);
    }
  }

接下来,我们写写一个 Row 类继承自 StatelessWidget ,如下所示:

public class Row extends StatelessWidget {

    Widget[] childrens;
    int width;
    int height;

    public Row(int width, int height, Widget... children) {
      this.width = width;
      this.height = height;
      this.childrens = children;
    }

    @Override
    public Widget build(BuildContext context) {
      return super.build(context);
    }
  }

接下来,我们写写一个 Container 类继承自 StatelessWidget ,如下所示:

public class Container extends StatelessWidget {

    Widget[] childrens;
    int width;
    int height;

    public Container(int width, int height, Widget... children) {
      this.width = width;
      this.height = height;
      this.childrens = children;
    }

    @Override
    public Widget build(BuildContext context) {
      return super.build(context);
    }
  }

接下来,我们写写一个 Text 类继承自 StatelessWidget ,如下所示:

public class Text extends StatelessWidget {
    String text;
    float size;
    public Text(String text, float size) {
      this.text = text;
      this.size = size;
    }
    @Override
    public Widget build(BuildContext context) {
      return super.build(context);
    }
  }

接下来就是我们的main函数的处理了,精彩不容错过:

首先我们写一个 runApp 函数,参数为 Widget 。具体逻辑我们暂时不做处理。如下所示:

public class Main {
  public static void main(String[] args) {
    runApp(new Home());
  }
  public static void runApp(Widget widget) {
  }
}

接下来我们写一个类 Home 继承自 StatelessWidget ,如下所示:

public class Home extends StatelessWidget {
    @Override
    public Widget build(BuildContext context) {
      return new Column(
          50,
          30,
          new Column(
              100,
              50,
              new Row(
                  200,
                  100,
                  new Text(
                      "contents",
                      20
                  )
              )
          ),
          new Container(
              100,
              150,
              new Column(
                  200,
                  100,
                  new Row(
                      50,
                      50,
                      new Text(
                          "contents2",
                          30
                      )
                  )
              )
          )
      );
    }
  }

OK,到此为止,就用Java语言实现了Flutter里面的多个括号嵌套的类似场景,是不是很相似?其实还是那就话,语言都是想通的,Java也好,Dart也好,都是面向对象的语言,掌握面向对象编程思想很关键。哪怕以后换成了其它的面向对象的语言,只要掌握了面向对象编程思想,同样也可以快速上手开发。

以上所述是小编给大家介绍的使用Java的方式模拟Flutter的Widget实现多层括号嵌套,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

更多精彩内容其他人还在看

JavaWeb项目部署到服务器详细步骤详解

这篇文章主要介绍了JavaWeb项目如何部署到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA基于支付宝小程序搭建springboot项目的详细步骤

这篇文章主要介绍了IDEA基于支付宝小程序搭建springboot项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解SpringBoot应用服务启动与安全终止

这篇文章主要介绍了SpringBoot应用服务启动与安全终止,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Boot启动及退出加载项的方法

这篇文章主要介绍了Spring Boot启动及退出加载项的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Data Jpa 自动生成表结构的方法示例

这篇文章主要介绍了Spring Data Jpa 自动生成表结构的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA中osgi的开发应用指南详解

这篇文章主要介绍了IDEA中osgi的开发应用指南详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解用maven将dubbo工程打成jar包运行

这篇文章主要介绍了详解用maven将dubbo工程打成jar包运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解Java合并数组的两种实现方式

这篇文章主要介绍了Java合并数组的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

使用Jenkins Pipeline自动化构建发布Java项目的方法

这篇文章主要介绍了使用Jenkins Pipeline自动化构建发布Java项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Maven配置Spring的方法步骤

这篇文章主要介绍了使用Maven配置Spring的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多