Unity_UIWidgets学习01
作者:互联网
UIWidgets是 Unity 的一个跨平台APP解决方案的插件包,它继承了Flutter精神。
1.新建一个UIPanel删除上面的Image组件 添加 第一个UIWidgets脚本 StartUIWidgetsprotected override Widget createWidget() { //Scaffold布局容器 return new MaterialApp( title: "Welecome to UIWidgets", home: new Scaffold( appBar: new AppBar( title: new Text("Welcome to UIWidgets", style: new TextStyle(color: Color.white, fontSize: 60)) ), body: new Center( child: new Text("Hello World", style: new TextStyle(color: Color.black, fontSize: 60)) ) ) ); }
2.创建一个滚动ListView
public class StartUIWidgets : UIWidgetsPanel { protected override void OnEnable() { //加载字体图标 FontManager.instance.addFont(Resources.Load<Font>("MaterialIcons-Regular"), "Material Icons"); base.OnEnable(); } protected override Widget createWidget() { return new MaterialApp( title: "第一个界面", home: new Number() ); } class Number : StatefulWidget { public override State createState() { return new NumberState(); } } class NumberState : State<StatefulWidget> { TextStyle _biggerFont = new TextStyle(fontSize: 60f); public override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text("Startup Name Generator") ), body: buildSuggestions() ); } Widget buildSuggestions() { return ListView.builder( padding: EdgeInsets.all(16f), itemBuilder: (context, i) => { if (i % 2 != 0) { //画分割线 return new Divider(); } int index = Mathf.CeilToInt(i / 2f);//让index为0,1,2,3... return buildRow(index); } ); } Widget buildRow(int r) { return new ListTile( title: new Text( r.ToString(), style: _biggerFont ), leading: new Icon( Icons.insert_photo, color: Colors.red ), trailing: new Icon( Icons.favorite, color: Colors.red ), onTap: () => { setState(() => { UnityEngine.Debug.Log("点击"); }); } ); } } }
3 界面切换
using Unity.UIWidgets.engine; using Unity.UIWidgets.material; using Unity.UIWidgets.widgets; using Unity.UIWidgets.painting; using Unity.UIWidgets.ui; using System; using System.Collections.Generic; using Color = Unity.UIWidgets.ui.Color; using UnityEngine; public class StartUIWidgets : UIWidgetsPanel { protected override void OnEnable() { FontManager.instance.addFont(Resources.Load<Font>("MaterialIcons-Regular"), "Material Icons"); //FontManager.instance.addFont(Resources.Load<Font>("GalleryIcons"), "GalleryIcons"); base.OnEnable(); } protected override Widget createWidget() { return new MaterialApp( title: "第一个界面", home: new Number() ); } class Number : StatefulWidget { public override State createState() { return new NumberState(); } } class NumberState : State<StatefulWidget> { TextStyle _biggerFont = new TextStyle(fontSize: 60f); public override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text("第一个界面"), actions: new List<Widget>() { new IconButton(icon: new Icon(Icons.list),onPressed:push), } ), body: buildSuggestions() ); } Widget buildSuggestions() { return ListView.builder( padding: EdgeInsets.all(16f), itemBuilder: (context, i) => { if (i % 2 != 0) { return new Divider(); } int index = Mathf.CeilToInt(i / 2f); return buildRow(index); } ); } Widget buildRow(int r) { return new ListTile( title: new Text( r.ToString(), style: _biggerFont ), leading: new Icon( Icons.insert_photo, color: Colors.red ), trailing: new Icon( Icons.favorite, color: Colors.red ), onTap: () => { setState(() => { UnityEngine.Debug.Log("点击"); }); } ); } void push() { Navigator.of(context).push( new MaterialPageRoute( builder: ctx => { return new Scaffold( appBar: new AppBar( title: new Text("我是第二个界面", style: new TextStyle(color: Color.black, fontSize: 60)) ), body: new Center( child: new Text("我是第二个界面", style: new TextStyle(color: Color.black, fontSize: 60)) ) ); } ) ); } } }
标签:Widget,01,return,Unity,UIWidgets,using,override,new 来源: https://www.cnblogs.com/PandaHome/p/11094313.html