您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

245 行
8.5 KiB

using System.Collections.Generic;
using System.Linq;
using uiwidgets;
using Unity.UIWidgets.foundation;
using Unity.UIWidgets.gestures;
using Unity.UIWidgets.material;
using Unity.UIWidgets.painting;
using Unity.UIWidgets.rendering;
using Unity.UIWidgets.ui;
using Unity.UIWidgets.widgets;
using Unity.UIWidgets.external;
using UnityEngine;
using Color = Unity.UIWidgets.ui.Color;
using TextStyle = Unity.UIWidgets.painting.TextStyle;
using Texture = Unity.UIWidgets.widgets.Texture;
using ui_ = Unity.UIWidgets.widgets.ui_;
namespace UIWidgetsSample
{
public class ToDoAppSample : UIWidgetsSamplePanel
{
protected override void main()
{
ui_.runApp(
new WidgetsApp(
color: Color.white,
home: new ToDoListApp(),
pageRouteBuilder: this.pageRouteBuilder)
);
}
protected new void OnEnable()
{
base.OnEnable();
}
public class ToDoListApp : StatefulWidget
{
public ToDoListApp(Key key = null) : base(key)
{
}
public override State createState()
{
return new _ToDoListAppState();
}
}
public class CustomButton : StatelessWidget
{
public CustomButton(
Key key = null,
GestureTapCallback onPressed = null,
EdgeInsets padding = null,
Color backgroundColor = null,
Widget child = null
) : base(key: key)
{
this.onPressed = onPressed;
this.padding = padding ?? EdgeInsets.all(8.0f);
this.backgroundColor = backgroundColor ?? Colors.transparent;
this.child = child;
}
public readonly GestureTapCallback onPressed;
public readonly EdgeInsets padding;
public readonly Widget child;
public readonly Color backgroundColor;
public override Widget build(BuildContext context)
{
return new GestureDetector(
onTap: this.onPressed,
child: new Container(
padding: this.padding,
color: this.backgroundColor,
child: this.child
)
);
}
}
class _ToDoListAppState : State<ToDoListApp>
{
public class ToDoItem
{
public int id;
public string content;
}
List<ToDoItem> items = new List<ToDoItem>();
int nextId = 0;
TextEditingController controller = new TextEditingController("");
FocusNode _focusNode;
public override void initState()
{
base.initState();
this._focusNode = new FocusNode();
}
public override void dispose()
{
this._focusNode.dispose();
base.dispose();
}
Widget title()
{
return new Text("ToDo App", textAlign: TextAlign.center,
style: new TextStyle(fontSize: 30, fontWeight: FontWeight.w700));
}
Widget textInput()
{
return new Container(
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: new List<Widget>(
)
{
new Container(
width: 300,
decoration: new BoxDecoration(border: Border.all(new Color(0xFF000000), 1)),
padding: EdgeInsets.fromLTRB(8, 0, 8, 0),
child: new EditableText(maxLines: 1,
controller: this.controller,
onSubmitted: (text) =>
{
this.controller.clear();
this._addItem(text);
},
selectionControls: MaterialUtils.materialTextSelectionControls,
backgroundCursorColor: Colors.red,
autofocus: true,
focusNode: new FocusNode(),
style: new TextStyle(
fontSize: 18,
height: 1.5f,
color: new Color(0xFF1389FD)
),
selectionColor: Color.fromARGB(255, 255, 0, 0),
cursorColor: Color.fromARGB(255, 0, 0, 0))
),
new CustomButton(backgroundColor: Color.fromARGB(255, 0, 204, 204),
padding: EdgeInsets.all(10),
child: new Text("Add", style: new TextStyle(
fontSize: 20, color: Color.fromARGB(255, 255, 255, 255), fontWeight: FontWeight.w700
)), onPressed: () => { this._addItem(); })
}
)
);
}
void _addItem(string text = null)
{
this.setState(() =>
{
text = text ?? this.controller.text;
if (text != "")
{
this.items.Add(new ToDoItem()
{id = this.nextId++, content = text});
}
});
}
Widget contents()
{
var children = LinqUtils<Widget,ToDoItem>.SelectList(this.items, (ToDoItem item) =>
{
return (Widget) new Text(
item.content, style: new TextStyle(
fontSize: 18,
height: 1.5f
)
);
});
return new Flexible(
child: new ListView(
physics: new AlwaysScrollableScrollPhysics(),
children: children.ToList()
)
);
}
public override Widget build(BuildContext context)
{
var container = new Container(
padding: EdgeInsets.all(10),
decoration: new BoxDecoration(color: new Color(0x7F000000),
border: Border.all(color: Color.fromARGB(255, 255, 0, 0), width: 5),
borderRadius: BorderRadius.all(2)),
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: new List<Widget>
{
this.title(),
this.textInput(),
// textInput(),
this.contents(),
// this.videoTexture(),
}
)
);
return container;
}
}
}
public class CustomButton : StatelessWidget
{
public CustomButton(
Key key = null,
GestureTapCallback onPressed = null,
EdgeInsets padding = null,
Color backgroundColor = null,
Widget child = null
) : base(key: key)
{
this.onPressed = onPressed;
this.padding = padding ?? EdgeInsets.all(8.0f);
this.backgroundColor = backgroundColor ?? Colors.transparent;
this.child = child;
}
public readonly GestureTapCallback onPressed;
public readonly EdgeInsets padding;
public readonly Widget child;
public readonly Color backgroundColor;
public override Widget build(BuildContext context)
{
return new GestureDetector(
onTap: this.onPressed,
child: new Container(
padding: this.padding,
color: this.backgroundColor,
child: this.child
)
);
}
}
}