Unity_UIWidgets学习笔记01

UIWidgets是 Unity 的一个跨平台APP解决方案的插件包,它继承了Flutter精神。

 
1.新建一个UIPanel删除上面的Image组件 添加 第一个UIWidgets脚本 StartUIWidgets
 
    protected 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))
                                               )

                               );
                }
                )
                );
        }
    }

}

猜你喜欢

转载自www.cnblogs.com/PandaHome/p/11094313.html
今日推荐