using System; using System.Collections.Generic; using uiwidgets; using Unity.UIWidgets.cupertino; using Unity.UIWidgets.engine; using Unity.UIWidgets.painting; using Unity.UIWidgets.rendering; using Unity.UIWidgets.ui; using Unity.UIWidgets.widgets; using UnityEngine; using Color = Unity.UIWidgets.ui.Color; using Text = Unity.UIWidgets.widgets.Text; using ui_ = Unity.UIWidgets.widgets.ui_; using TextStyle = Unity.UIWidgets.painting.TextStyle; namespace UIWidgetsSample { public class DateAndTimePicker : UIWidgetsPanel { protected void OnEnable() { base.OnEnable(); } protected override void main() { ui_.runApp(new MyApp()); } class MyApp : StatelessWidget { public override Widget build(BuildContext context) { return new CupertinoApp( home: new DateAndTimePickerWidget() ); } } } public class DateAndTimePickerWidget : StatefulWidget { public override State createState() { return new DateAndTimePickerWidgetState(); } } public class DateAndTimePickerWidgetState : State { public bool isLottieVisable = true; private Widget picker = null; Widget _buildMenu(List children) { return new Container( decoration: new BoxDecoration( color: CupertinoTheme.of(this.context).scaffoldBackgroundColor, border: new Border( top: new BorderSide(color: new Color(0xFFBCBBC1), width: 0.0f), bottom: new BorderSide(color: new Color(0xFFBCBBC1), width: 0.0f) ) ), height: 44.0f, child: new Padding( padding: EdgeInsets.symmetric(horizontal: 16.0f), child: new SafeArea( top: false, bottom: false, child: new Row( //mainAxisAlignment: MainAxisAlignment.spaceBetween, children: children ) ) ) ); } DateTime dateTime = DateTime.Now; Widget _buildBottomPicker(Widget picker) { return new Container( height: 280f, width : 500f, padding: EdgeInsets.only(top: 6.0f), color: Color.fromARGB(100,0,0,0), child: new DefaultTextStyle( style: new TextStyle( color: Colors.red, fontSize: 12.0f ), child: new GestureDetector( // Blocks taps from propagating to the modal sheet and popping. onTap: () => { }, child: new SafeArea( top: false, child: picker ) ) ) ); } Widget _buildDateAndTimePicker(BuildContext context) { return new GestureDetector( onTap: () => { setState(() => { isLottieVisable = false; }); ModalPage.popup( context, _buildBottomPicker( new CupertinoTheme( data: new CupertinoThemeData( textTheme: new CupertinoTextThemeData( dateTimePickerTextStyle: new TextStyle( fontSize: 16, color: Color.fromARGB(255, 226, 255, 255) ) ) ), child: new CupertinoDatePicker( backgroundColor: Colors.transparent, mode: CupertinoDatePickerMode.dateAndTime, initialDateTime: this.dateTime, onDateTimeChanged: (DateTime newDateTime) => { this.setState(() => { LightManager.time = newDateTime; this.dateTime = newDateTime; }); } ) ) ), onPop: () => { setState(() => { isLottieVisable = true; }); Debug.Log("onPop"); }); }, child: new Text( this.dateTime.ToString("MMMM dd, yyyy h:mm tt"), style: new TextStyle(color: Colors.white, fontSize:23) ) ); } public override Widget build(BuildContext context) { return new Container( child : new Stack( children:new List() { new Visibility( child: new LottieApp(), visible: isLottieVisable), this._buildDateAndTimePicker(context), }) ); } } }