使用Java的方式模擬Flutter的Widget實現(xiàn)多層括號嵌套
我已經(jīng)研究Flutter很長時間了。我就想既然Flutter用的Dart語言,而且括號又是嵌套多層,很多人都表示不是很理解,也不是很喜歡那么多層括號嵌套。其實完全不用擔心,既然選擇了它,就要接受它,當然是選擇原諒它。廢話少說,其實Java也是可以實現(xiàn)類似的語法的,下面帶領(lǐng)大家作死的嘗試一下使用Java模擬Flutter的Widget,歡迎各類開發(fā)人員前來觀戰(zhàn)。
Flutter最重要的是 Widget ,首先我們來寫一個類 Widget ,然后有一個 build 函數(shù)。如下所示:
Tips: (我是阿韋。我的公眾號 Flutter 那些事 ,干貨多多,歡迎關(guān)注。惦記我的資料,可以與我取得聯(lián)系。有任何疑問,歡迎在本文后面留言回復。)
public class Widget {
private BuildContext mContext;
public Widget build(BuildContext context){
this.mContext = context;
return this;
}
}
接著我們寫一個重要的類 BuildContext ,如下所示:
我們直接跳過細節(jié)了,這里寫的都是核心點。
public class BuildContext {
public BuildContext(){
}
}
接下來就是一個關(guān)鍵的類 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函數(shù)的處理了,精彩不容錯過:
首先我們寫一個 runApp 函數(shù),參數(shù)為 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語言實現(xiàn)了Flutter里面的多個括號嵌套的類似場景,是不是很相似?其實還是那就話,語言都是想通的,Java也好,Dart也好,都是面向?qū)ο蟮恼Z言,掌握面向?qū)ο缶幊趟枷牒荜P(guān)鍵。哪怕以后換成了其它的面向?qū)ο蟮恼Z言,只要掌握了面向?qū)ο缶幊趟枷?,同樣也可以快速上手開發(fā)。
總結(jié)
以上所述是小編給大家介紹的使用Java的方式模擬Flutter的Widget實現(xiàn)多層括號嵌套,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
JavaWeb實戰(zhàn)之用Servlet+JDBC實現(xiàn)用戶登錄與注冊
這篇文章主要介紹了JavaWeb實戰(zhàn)之用Servlet+JDBC實現(xiàn)用戶登錄與注冊,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很大的幫助,需要的朋友可以參考下2021-04-04
重新啟動IDEA時maven項目SSM框架文件變色所有@注解失效
這篇文章主要介紹了重新啟動IDEA時maven項目SSM框架文件變色所有@注解失效,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
SpringBoot如何監(jiān)控Redis中某個Key的變化(自定義監(jiān)聽器)
這篇文章主要介紹了SpringBoot如何監(jiān)控Redis中某個Key的變化(自定義監(jiān)聽器),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
關(guān)于Spring項目對JDBC的支持與基本使用詳解
這段時間一直在觀看Spring框架,所以下面這篇文章主要給大家介紹了關(guān)于Spring項目對JDBC的支持與基本使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-11-11
java?http請求設(shè)置代理Proxy的兩種常見方法
代理是一種常見的設(shè)計模式,其目的就是為其他對象提供一個代理以控制對某個對象的訪問,這篇文章主要給大家介紹了關(guān)于java?http請求設(shè)置代理Proxy的兩種常見方法,需要的朋友可以參考下2023-11-11
設(shè)計模式之原型模式_動力節(jié)點Java學院整理
這篇文章主要介紹了設(shè)計模式之原型模式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08

