浏览代码

Merge pull request #291 from IIzzaya/hook1.5.4

Hook 1.5.4 Cupertino
/main
GitHub 5 年前
当前提交
27816802
共有 40 个文件被更改,包括 2992 次插入143 次删除
  1. 13
      Runtime/cupertino/app.cs
  2. 6
      Runtime/cupertino/bottom_app_bar.cs
  3. 14
      Runtime/cupertino/button.cs
  4. 28
      Runtime/cupertino/nav_bar.cs
  5. 1
      Runtime/cupertino/page_scaffold.cs
  6. 26
      Runtime/cupertino/route.cs
  7. 8
      Runtime/cupertino/slider.cs
  8. 10
      Runtime/cupertino/switch.cs
  9. 13
      Runtime/cupertino/tab_scaffold.cs
  10. 2
      Runtime/material/chip.cs
  11. 2
      Runtime/material/input_decorator.cs
  12. 2
      Runtime/material/list_tile.cs
  13. 2
      Runtime/material/slider.cs
  14. 2
      Runtime/rendering/box.cs
  15. 2
      Runtime/rendering/custom_layout.cs
  16. 2
      Runtime/rendering/editable.cs
  17. 2
      Runtime/rendering/flex.cs
  18. 2
      Runtime/rendering/image.cs
  19. 2
      Runtime/rendering/list_body.cs
  20. 2
      Runtime/rendering/paragraph.cs
  21. 2
      Runtime/rendering/performance_overlay.cs
  22. 8
      Runtime/rendering/proxy_box.cs
  23. 2
      Runtime/rendering/proxy_box.mixin.gen.cs
  24. 2
      Runtime/rendering/rotated_box.cs
  25. 10
      Runtime/rendering/shifted_box.cs
  26. 2
      Runtime/rendering/stack.cs
  27. 2
      Runtime/rendering/table.cs
  28. 2
      Runtime/rendering/viewport.cs
  29. 2
      Runtime/rendering/wrap.cs
  30. 2
      Runtime/widgets/layout_builder.cs
  31. 2
      Runtime/widgets/single_child_scroll_view.cs
  32. 73
      Samples/UIWidgetsGallery/demo/cupertino/cupertino_alert_demo.cs
  33. 838
      Samples/UIWidgetsGallery/demo/cupertino/cupertino_navigation_demo.cs
  34. 2
      Samples/UIWidgetsGallery/demo/cupertino/cupertino_navigation_demo.cs.meta
  35. 1
      Samples/UIWidgetsGallery/demo/cupertino/cupertino_slider_demo.cs
  36. 20
      Samples/UIWidgetsGallery/gallery/demos.cs
  37. 1001
      Runtime/cupertino/action_sheet.cs
  38. 11
      Runtime/cupertino/action_sheet.cs.meta
  39. 1001
      Runtime/cupertino/dialog.cs
  40. 11
      Runtime/cupertino/dialog.cs.meta

13
Runtime/cupertino/app.cs


List<Locale> supportedLocales = null,
bool showPerformanceOverlay = false
) : base(key: key) {
// D.assert(routes != null);
// D.assert(navigatorObservers != null);
// D.assert(title != null);
// D.assert(showPerformanceOverlay != null);
D.assert(title != null);
supportedLocales = supportedLocales ?? new List<Locale> {new Locale("en", "US")};
this.navigatorKey = navigatorKey;

this._navigatorObservers = new List<NavigatorObserver>();
}
}
// Iterable<LocalizationsDelegate<dynamic>> get _localizationsDelegates sync* {
// if (widget.localizationsDelegates != null)
// yield* widget.localizationsDelegates;
// yield DefaultCupertinoLocalizations.delegate;
// }
List<LocalizationsDelegate> _localizationsDelegates {
get {
List<LocalizationsDelegate<CupertinoLocalizations>> _delegates =

6
Runtime/cupertino/bottom_app_bar.cs


() => "Tabs need at least 2 items to conform to Apple's HIG"
);
D.assert(0 <= currentIndex && currentIndex < items.Count);
D.assert(inactiveColor != null);
this.items = items;
this.onTap = onTap;
this.currentIndex = currentIndex;

for (int index = 0; index < this.items.Count; index += 1) {
bool active = index == this.currentIndex;
var tabIndex = index;
result.Add(
this._wrapActiveItem(
context,

onTap: this.onTap == null ? null : (GestureTapCallback) (() => { this.onTap(index); }),
onTap: this.onTap == null ? null : (GestureTapCallback) (() => { this.onTap(tabIndex); }),
child: new Padding(
padding: EdgeInsets.only(bottom: 4.0f),
child: new Column(

14
Runtime/cupertino/button.cs


BorderRadius borderRadius = null,
bool filled = false
) : base(key: key) {
D.assert(pressedOpacity == null || (pressedOpacity >= 0.0 && pressedOpacity <= 1.0));
D.assert(pressedOpacity >= 0.0 && pressedOpacity <= 1.0);
this._filled = filled;
this.child = child;
this.onPressed = onPressed;

float pressedOpacity = 0.1f,
BorderRadius borderRadius = null
) {
D.assert(pressedOpacity == null || (pressedOpacity >= 0.0 && pressedOpacity <= 1.0));
D.assert(pressedOpacity >= 0.0 && pressedOpacity <= 1.0);
return new CupertinoButton(
key: key,
color: null,

}
},
child: new ConstrainedBox(
constraints: this.widget.minSize == null
? new BoxConstraints()
: new BoxConstraints(
minWidth: this.widget.minSize,
minHeight: this.widget.minSize
),
constraints: new BoxConstraints(
minWidth: this.widget.minSize,
minHeight: this.widget.minSize
),
child: new FadeTransition(
opacity: this._opacityAnimation,
child: new DecoratedBox(

28
Runtime/cupertino/nav_bar.cs


BuildContext toHeroContext
) => {
D.assert(animation != null);
D.assert(flightDirection != null);
D.assert(fromHeroContext != null);
D.assert(toHeroContext != null);
D.assert(fromHeroContext.widget is Hero);

bottomNavBar: fromNavBar,
topNavBar: toNavBar
);
break;
case HeroFlightDirection.pop:
return new _NavigationBarTransition(
animation: animation,

new Builder(
builder: (BuildContext _context) => {
return new Hero(
tag: this.widget.heroTag == NavBarUtils._defaultHeroTag
tag: this.widget.heroTag as _HeroTag == NavBarUtils._defaultHeroTag
? new _HeroTag(Navigator.of(_context))
: this.widget.heroTag,
createRectTween: NavBarUtils._linearTranslateWithLargestRectSizeTween,

bool transitionBetweenRoutes = true,
object heroTag = null
) : base(key: key) {
D.assert(automaticallyImplyLeading != null);
D.assert(automaticallyImplyTitle != null);
D.assert(
automaticallyImplyTitle == true || largeTitle != null,
() => "No largeTitle has been provided but automaticallyImplyTitle is also " +

float persistentHeight,
bool alwaysShowMiddle
) {
D.assert(this.persistentHeight != null);
D.assert(this.alwaysShowMiddle != null);
D.assert(this.transitionBetweenRoutes != null);
this.keys = keys;
this.components = components;
this.userMiddle = userMiddle;

}
return new Hero(
tag: this.heroTag == NavBarUtils._defaultHeroTag
tag: this.heroTag as _HeroTag == NavBarUtils._defaultHeroTag
? new _HeroTag(Navigator.of(context))
: this.heroTag,
createRectTween: NavBarUtils._linearTranslateWithLargestRectSizeTween,

style: CupertinoTheme.of(context).textTheme.navTitleTextStyle,
child: middle
);
middle = this.middleVisible == null
? middle
: new AnimatedOpacity(
opacity: this.middleVisible ? 1.0f : 0.0f,
duration: NavBarUtils._kNavBarTitleFadeDuration,
child: middle
);
middle = new AnimatedOpacity(
opacity: this.middleVisible ? 1.0f : 0.0f,
duration: NavBarUtils._kNavBarTitleFadeDuration,
child: middle
);
}
Widget leading = this.components.leading;

_TransitionableNavigationBar topNavBar,
_TransitionableNavigationBar bottomNavBar
) {
this.animation = animation;
this.topNavBar = topNavBar;
this.bottomNavBar = bottomNavBar;
this.heightTween = new FloatTween(
begin: this.bottomNavBar.renderBox.size.height,
end: this.topNavBar.renderBox.size.height

_TransitionableNavigationBar topNavBar,
TextDirection directionality
) {
this.animation = animation;
this.bottomComponents = bottomNavBar.componentsKeys;
this.topComponents = topNavBar.componentsKeys;
this.bottomNavBarBox = bottomNavBar.renderBox;

1
Runtime/cupertino/page_scaffold.cs


bool resizeToAvoidBottomInset = true
) : base(key: key) {
D.assert(child != null);
D.assert(resizeToAvoidBottomInset != null);
this.child = child;
this.navigationBar = navigationBar;

26
Runtime/cupertino/route.cs


);
public static IPromise<T> showCupertinoModalPopup<T>(
public static IPromise<object> showCupertinoModalPopup(
return (IPromise<T>) Navigator.of(context, rootNavigator: true).push(
return Navigator.of(context, rootNavigator: true).push(
new _CupertinoModalPopupRoute(
builder: builder,
barrierLabel: "Dismiss"

);
}
public static IPromise<T> showCupertinoDialog<T>(
public static IPromise<object> showCupertinoDialog(
return (IPromise<T>) DialogUtils.showGeneralDialog(
return DialogUtils.showGeneralDialog(
pageBuilder:
(BuildContext _context, Animation<float> animation, Animation<float> secondaryAnimation) => {
pageBuilder: (BuildContext _context, Animation<float> animation, Animation<float> secondaryAnimation) => {
return builder(_context);
},
transitionBuilder: _buildCupertinoDialogTransitions

_CupertinoEdgeShadowDecoration b,
float t
) {
D.assert(t != null);
if (a == null && b == null) {
return null;
}

return new _CupertinoEdgeShadowPainter(this, onChanged);
}
public override int GetHashCode() {
return this.edgeGradient.GetHashCode();
}
public bool Equals(_CupertinoEdgeShadowDecoration other) {
if (ReferenceEquals(null, other)) {
return false;

public class CupertinoPageRoute : PageRoute {
public CupertinoPageRoute(
WidgetBuilder builder,
RouteSettings settings,
RouteSettings settings = null,
string title = "",
bool maintainState = true,
bool fullscreenDialog = false

D.assert(maintainState != null);
D.assert(fullscreenDialog != null);
D.assert(this.opaque);
this.builder = builder;
this.title = title;

return buildPageTransitions(this, context, animation, secondaryAnimation, child);
}
public string debugLabel {
public new string debugLabel {
get { return $"{base.debugLabel}(${this.settings.name})"; }
}
}

bool linearTransition,
Key key = null
) : base(key: key) {
D.assert(linearTransition != null);
this._primaryPositionAnimation =
(linearTransition
? primaryRouteAnimation

get { return CupertinoRouteUtils._kModalPopupTransitionDuration; }
}
Animation<float> _animation;
new Animation<float> _animation;
public override Animation<float> createAnimation() {
D.assert(this._animation == null);

8
Runtime/cupertino/slider.cs


) : base(key: key) {
D.assert(value != null);
D.assert(onChanged != null);
D.assert(min != null);
D.assert(max != null);
D.assert(value >= min && value <= max);
D.assert(divisions == null || divisions > 0);
this.value = value.Value;

public override void updateRenderObject(BuildContext context, RenderObject _renderObject) {
_RenderCupertinoSlider renderObject = _renderObject as _RenderCupertinoSlider;
renderObject.value = this.value ?? 0.0f;
renderObject.divisions = this.divisions ?? 0;
renderObject.divisions = this.divisions;
renderObject.activeColor = this.activeColor;
renderObject.onChanged = this.onChanged;
renderObject.onChangeStart = this.onChangeStart;

TickerProvider vsync = null
) : base(additionalConstraints: BoxConstraints.tightFor(width: SliderUtils._kSliderWidth,
height: SliderUtils._kSliderHeight)) {
D.assert(value != null && value >= 0.0f && value <= 1.0f);
D.assert(value >= 0.0f && value <= 1.0f);
this._value = value;
this._divisions = divisions;
this._activeColor = activeColor;

public float value {
get { return this._value; }
set {
D.assert(value != null && value >= 0.0f && value <= 1.0f);
D.assert(value >= 0.0f && value <= 1.0f);
if (value == this._value) {
return;
}

10
Runtime/cupertino/switch.cs


Key key = null,
Color activeColor = null,
DragStartBehavior dragStartBehavior = DragStartBehavior.start
) :
base(key: key) {
D.assert(value != null);
D.assert(dragStartBehavior != null);
) : base(key: key) {
this.value = value;
this.onChanged = onChanged;
this.activeColor = activeColor;

width: CupertinoSwitchUtils._kSwitchWidth,
height: CupertinoSwitchUtils._kSwitchHeight)
) {
D.assert(value != null);
D.assert(activeColor != null);
D.assert(vsync != null);
this._value = value;

public bool value {
get { return this._value; }
set {
D.assert(value != null);
if (value == this._value) {
return;
}

public TextDirection textDirection {
get { return this._textDirection; }
set {
D.assert(value != null);
if (this._textDirection == value) {
return;
}

public DragStartBehavior dragStartBehavior {
get { return this._drag.dragStartBehavior; }
set {
D.assert(value != null);
if (this._drag.dragStartBehavior == value) {
return;
}

13
Runtime/cupertino/tab_scaffold.cs


public override void initState() {
base.initState();
this._currentPage = this.widget.tabBar.currentIndex;
}
public override void didUpdateWidget(StatefulWidget _oldWidget) {

int tabNumber,
IndexedWidgetBuilder tabBuilder
) {
D.assert(currentTabIndex != null);
D.assert(tabNumber != null && tabNumber > 0);
D.assert(tabNumber > 0);
this.currentTabIndex = currentTabIndex;
this.tabNumber = tabNumber;
this.tabBuilder = tabBuilder;
}
public readonly int currentTabIndex;

public override void initState() {
base.initState();
this.tabs = new List<Widget>(this.widget.tabNumber);
for (int i = 0; i < this.widget.tabNumber; i++) {
this.tabs.Add(null);
}
this.tabFocusNodes = Enumerable.Repeat(new FocusScopeNode(), this.widget.tabNumber).ToList();
}

for (int index = 0; index < this.widget.tabNumber; index++) {
bool active = index == this.widget.currentTabIndex;
var tabIndex = index;
this.tabs[index] = this.widget.tabBuilder(context, index);
this.tabs[index] = this.widget.tabBuilder(context, tabIndex);
}
children.Add(new Offstage(

2
Runtime/material/chip.cs


);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this.computeMinIntrinsicHeight(width);
}

2
Runtime/material/input_decorator.cs


+ this.contentPadding.bottom;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this.computeMinIntrinsicHeight(width);
}

2
Runtime/material/list_tile.cs


this.title.getMinIntrinsicHeight(width) + this.subtitle?.getMinIntrinsicHeight(width) ?? 0.0f);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this.computeMinIntrinsicHeight(width);
}

2
Runtime/material/slider.cs


return Mathf.Max(this._minPreferredTrackHeight, this._maxSliderPartHeight);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return Mathf.Max(this._minPreferredTrackHeight, this._maxSliderPartHeight);
}

2
Runtime/rendering/box.cs


this.computeMaxIntrinsicHeight);
}
protected virtual float computeMaxIntrinsicHeight(float width) {
protected internal virtual float computeMaxIntrinsicHeight(float width) {
return 0.0f;
}

2
Runtime/rendering/custom_layout.cs


return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
float height = this._getSize(BoxConstraints.tightForFinite(width: width)).height;
if (height.isFinite()) {
return height;

2
Runtime/rendering/editable.cs


return this._preferredHeight(width);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this._preferredHeight(width);
}

2
Runtime/rendering/flex.cs


);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this._getIntrinsicSize(
sizingDirection: Axis.vertical,
extent: width,

2
Runtime/rendering/image.cs


return this._sizeForConstraints(BoxConstraints.tightForFinite(width: width)).height;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
D.assert(width >= 0.0);
return this._sizeForConstraints(BoxConstraints.tightForFinite(width: width)).height;
}

2
Runtime/rendering/list_body.cs


}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
switch (this.mainAxis) {
case Axis.horizontal:
return this._getIntrinsicMainAxis((RenderBox child) => child.getMaxIntrinsicHeight(width));

2
Runtime/rendering/paragraph.cs


return this._computeIntrinsicHeight(width);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this._computeIntrinsicHeight(width);
}

2
Runtime/rendering/performance_overlay.cs


return this._intrinsicHeight;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this._intrinsicHeight;
}

8
Runtime/rendering/proxy_box.cs


return height;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this._additionalConstraints.hasBoundedHeight && this._additionalConstraints.hasTightHeight) {
return this._additionalConstraints.minHeight;
}

return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (width.isFinite()) {
return width / this._aspectRatio;
}

return _applyStep(height, this._stepHeight);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.child == null) {
return 0.0f;
}

return base.computeMinIntrinsicHeight(width);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.offstage) {
return 0.0f;
}

2
Runtime/rendering/proxy_box.mixin.gen.cs


return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.child != null) {
return this.child.getMaxIntrinsicHeight(width);
}

2
Runtime/rendering/rotated_box.cs


return this._isVertical ? this.child.getMinIntrinsicWidth(width) : this.child.getMinIntrinsicHeight(width);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.child == null) {
return 0.0f;
}

10
Runtime/rendering/shifted_box.cs


return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.child != null) {
return this.child.getMaxIntrinsicHeight(width);
}

return this._padding.vertical;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.child != null) {
return this.child.getMaxIntrinsicHeight(Mathf.Max(0.0f, width - this._padding.horizontal)) +
this._padding.vertical;

return this._requestedSize.height;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this._requestedSize.height;
}

return result / (this._heightFactor ?? 1.0f);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
float result;
if (this.child == null) {
result = base.computeMaxIntrinsicHeight(width);

return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
float height = this._getSize(BoxConstraints.tightForFinite(width: width)).height;
if (height.isFinite()) {
return height;

2
Runtime/rendering/stack.cs


return this._getIntrinsicDimension((RenderBox child) => child.getMinIntrinsicHeight(width));
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this._getIntrinsicDimension((RenderBox child) => child.getMaxIntrinsicHeight(width));
}

2
Runtime/rendering/table.cs


return rowTop;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
return this.computeMinIntrinsicHeight(width);
}

2
Runtime/rendering/viewport.cs


return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
D.assert(this.debugThrowIfNotCheckingIntrinsics());
return 0.0f;
}

2
Runtime/rendering/wrap.cs


throw new Exception("Unknown axis: " + this.direction);
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
switch (this.direction) {
case Axis.horizontal:
return this._computeIntrinsicHeightForWidth(width);

2
Runtime/widgets/layout_builder.cs


return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
D.assert(this._debugThrowIfNotCheckingIntrinsics());
return 0.0f;
}

2
Runtime/widgets/single_child_scroll_view.cs


return 0.0f;
}
protected override float computeMaxIntrinsicHeight(float width) {
protected internal override float computeMaxIntrinsicHeight(float width) {
if (this.child != null) {
return this.child.getMaxIntrinsicHeight(width);
}

73
Samples/UIWidgetsGallery/demo/cupertino/cupertino_alert_demo.cs


using Unity.UIWidgets.widgets;
namespace UIWidgetsGallery.gallery {
/*
public override State createState() => new _CupertinoAlertDemoState();
public override State createState() {
return new _CupertinoAlertDemoState();
}
}
class _CupertinoAlertDemoState : State<CupertinoAlertDemo> {

BuildContext context = null,
Widget child = null
) {
CupertinoRouteUtils.showCupertinoDialog<string>(
CupertinoRouteUtils.showCupertinoDialog(
).Then((string value) => {
).Then((object value) => {
this.setState(() => { this.lastSelectedValue = value; });
this.setState(() => { this.lastSelectedValue = value as string; });
}
});
}

Widget child = null
) {
CupertinoRouteUtils.showCupertinoModalPopup<string>(
CupertinoRouteUtils.showCupertinoModalPopup(
).Then((string value) => {
).Then((object value) => {
this.setState(() => { this.lastSelectedValue = value; });
this.setState(() => { this.lastSelectedValue = value as string; });
}
});
}

onPressed: () => {
this.showDemoDialog(
context: _context,
child: new CupertinoAlertDialog(
child:
new CupertinoAlertDialog(
title: new Text("Discard draft?"),
actions: new List<Widget> {
new CupertinoDialogAction(

);
}
),
// TODO: FIX BUG
new Padding(padding: EdgeInsets.all(8.0f)),
CupertinoButton.filled(
child: new Text("Action Sheet"),

context: _context,
child: new CupertinoActionSheet(
title: new Text("Favorite Dessert"),
message:
new Text(
message: new Text(
actions:
new List<Widget> {
new CupertinoActionSheetAction(
child: new Text("Profiteroles"),
onPressed: () => {
Navigator.pop(_context, "Profiteroles");
}
),
new CupertinoActionSheetAction(
child: new Text("Cannolis"),
onPressed: () => {
Navigator.pop(_context, "Cannolis");
}
),
new CupertinoActionSheetAction(
child: new Text("Trifle"),
onPressed: () => { Navigator.pop(_context, "Trifle"); }
),
actions: new List<Widget> {
// new CupertinoActionSheetAction(
// child: new Text("Profiteroles"),
// onPressed: () => {
// Navigator.pop(_context, "Profiteroles");
// }
// ),
// new CupertinoActionSheetAction(
// child: new Text("Cannolis"),
// onPressed: () => {
// Navigator.pop(_context, "Cannolis");
// }
// ),
// new CupertinoActionSheetAction(
// child: new Text("Trifle"),
// onPressed: () => { Navigator.pop(_context, "Trifle"); }
// )
isDefaultAction:
true,
onPressed:
() => { Navigator.pop(_context, "Cancel"); }
isDefaultAction: true,
onPressed: () => { Navigator.pop(_context, "Cancel"); }
)
)
);

stackChildren.Add(
new Positioned(
bottom: 32.0f,
child: new Text("You selected: $lastSelectedValue")
child: new Text($"You selected: {this.lastSelectedValue}")
)
);
}

public override Widget build(BuildContext context) {
return new CupertinoAlertDialog(
title: title,
content: content,
title: this.title,
content: this.content,
actions: new List<Widget> {
new CupertinoDialogAction(
child: new Text("Cheesecake"),

);
}
}
*/
}

838
Samples/UIWidgetsGallery/demo/cupertino/cupertino_navigation_demo.cs


using System.Collections.Generic;
using RSG;
using Unity.UIWidgets.cupertino;
using Unity.UIWidgets.foundation;
using Unity.UIWidgets.material;
using Unity.UIWidgets.painting;
using Unity.UIWidgets.rendering;
using Unity.UIWidgets.service;
using Unity.UIWidgets.ui;
using Unity.UIWidgets.widgets;
using UnityEngine;
using Color = Unity.UIWidgets.ui.Color;
public class cupertino_navigation_demo {
class CupertinoNavigationDemoUtils {
public const string _kGalleryAssetsPackage = "flutter_gallery_assets";
public const int _kChildCount = 50;
public static List<Color> coolColors = new List<Color> {
Color.fromARGB(255, 255, 59, 48),
Color.fromARGB(255, 255, 149, 0),
Color.fromARGB(255, 255, 204, 0),
Color.fromARGB(255, 76, 217, 100),
Color.fromARGB(255, 90, 200, 250),
Color.fromARGB(255, 0, 122, 255),
Color.fromARGB(255, 88, 86, 214),
Color.fromARGB(255, 255, 45, 85),
};
public static List<string> coolColorNames = new List<string> {
"Sarcoline", "Coquelicot", "Smaragdine", "Mikado", "Glaucous", "Wenge",
"Fulvous", "Xanadu", "Falu", "Eburnean", "Amaranth", "Australien",
"Banan", "Falu", "Gingerline", "Incarnadine", "Labrador", "Nattier",
"Pervenche", "Sinoper", "Verditer", "Watchet", "Zafre",
};
public static Widget trailingButtons {
get {
return new Row(
mainAxisSize: MainAxisSize.min,
children: new List<Widget> {
new CupertinoDemoDocumentationButton(CupertinoNavigationDemo.routeName),
new Padding(padding: EdgeInsets.only(left: 8.0f)),
new ExitButton(),
}
);
}
}
public static List<Widget> buildTab2Conversation() {
return new List<Widget> {
new Tab2ConversationRow(
text: "My Xanadu doesn't look right"
),
new Tab2ConversationRow(
avatar: new Tab2ConversationAvatar(
text: "KL",
color: new Color(0xfFD5015)
),
text: "We'll rush you a new one.\nIt's gonna be incredible"
),
new Tab2ConversationRow(
text: "Awesome thanks!"
),
new Tab2ConversationRow(
avatar: new Tab2ConversationAvatar(
text: "SJ",
color: new Color(0xf34CAD6)
),
text: "We'll send you our\nnewest Labrador too!"
),
new Tab2ConversationRow(
text: "Yay"
),
new Tab2ConversationRow(
avatar: new Tab2ConversationAvatar(
text: "KL",
color: new Color(0xfFD5015)
),
text: "Actually there's one more thing..."
),
new Tab2ConversationRow(
text: "What's that ? "
),
};
}
}
public class CupertinoNavigationDemo : StatelessWidget {
public CupertinoNavigationDemo() {
this.colorItems = new List<Color>();
for (int i = 0; i < CupertinoNavigationDemoUtils._kChildCount; i++) {
this.colorItems.Add(CupertinoNavigationDemoUtils.coolColors[
Random.Range(0, CupertinoNavigationDemoUtils.coolColors.Count)
]);
}
this.colorNameItems = new List<string>();
for (int i = 0; i < CupertinoNavigationDemoUtils._kChildCount; i++) {
this.colorNameItems.Add(CupertinoNavigationDemoUtils.coolColorNames[
Random.Range(0, CupertinoNavigationDemoUtils.coolColorNames.Count)
]);
}
}
public static string routeName = "/cupertino/navigation";
public readonly List<Color> colorItems;
public readonly List<string> colorNameItems;
public override Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: () => { return Promise<bool>.Resolved(true); },
child: new DefaultTextStyle(
style: CupertinoTheme.of(context).textTheme.textStyle,
child: new CupertinoTabScaffold(
tabBar: new CupertinoTabBar(
items: new List<BottomNavigationBarItem> {
new BottomNavigationBarItem(
icon: new Icon(CupertinoIcons.home),
title: new Text("Home")
),
new BottomNavigationBarItem(
icon: new Icon(CupertinoIcons.conversation_bubble),
title: new Text("Support")
),
new BottomNavigationBarItem(
icon: new Icon(CupertinoIcons.profile_circled),
title: new Text("Profile")
)
}
),
tabBuilder: (BuildContext _context, int index) => {
D.assert(index >= 0 && index <= 2);
switch (index) {
case 0:
return new CupertinoTabView(
builder: (BuildContext _context1) => {
return new CupertinoDemoTab1(
colorItems: this.colorItems,
colorNameItems: this.colorNameItems
);
},
defaultTitle: "Colors"
);
break;
case 1:
return new CupertinoTabView(
builder: (BuildContext _context2) => new CupertinoDemoTab2(),
defaultTitle: "Support Chat"
);
break;
case 2:
return new CupertinoTabView(
builder: (BuildContext _context3) => new CupertinoDemoTab3(),
defaultTitle: "Account"
);
break;
}
return null;
}
)
)
);
}
}
class ExitButton : StatelessWidget {
public ExitButton() { }
public override Widget build(BuildContext context) {
return new CupertinoButton(
padding: EdgeInsets.zero,
child: new Tooltip(
message: "Back",
child: new Text("Exit")
),
onPressed: () => { Navigator.of(context, rootNavigator: true).pop(); }
);
}
}
class CupertinoDemoTab1 : StatelessWidget {
public CupertinoDemoTab1(
List<Color> colorItems = null,
List<string> colorNameItems = null
) {
this.colorItems = colorItems;
this.colorNameItems = colorNameItems;
}
public readonly List<Color> colorItems;
public readonly List<string> colorNameItems;
public override Widget build(BuildContext context) {
return new CupertinoPageScaffold(
child: new CustomScrollView(
slivers: new List<Widget> {
new CupertinoSliverNavigationBar(
trailing: CupertinoNavigationDemoUtils.trailingButtons
),
new SliverPadding(
padding: MediaQuery.of(context).removePadding(
removeTop: true,
removeLeft: true,
removeRight: true
).padding,
sliver: new SliverList(
del: new SliverChildBuilderDelegate(
(BuildContext _context, int index) => {
return new Tab1RowItem(
index: index,
lastItem: index == CupertinoNavigationDemoUtils._kChildCount - 1,
color: this.colorItems[index],
colorName: this.colorNameItems[index]
);
},
childCount: CupertinoNavigationDemoUtils._kChildCount
)
)
)
}
)
);
}
}
class Tab1RowItem : StatelessWidget {
public Tab1RowItem(
int index,
bool lastItem,
Color color,
string colorName
) {
this.index = index;
this.lastItem = lastItem;
this.color = color;
this.colorName = colorName;
}
public readonly int index;
public readonly bool lastItem;
public readonly Color color;
public readonly string colorName;
public override Widget build(BuildContext context) {
Widget row = new GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => {
Navigator.of(context).push(new CupertinoPageRoute(
title: this.colorName,
builder: (BuildContext _context) => new Tab1ItemPage(
color: this.color,
colorName: this.colorName,
index: this.index
)
));
},
child: new SafeArea(
top: false,
bottom: false,
child: new Padding(
padding: EdgeInsets.only(left: 16.0f, top: 8.0f, bottom: 8.0f, right: 8.0f),
child: new Row(
children: new List<Widget> {
new Container(
height: 60.0f,
width: 60.0f,
decoration: new BoxDecoration(
color: this.color,
borderRadius: BorderRadius.circular(8.0f)
)
),
new Expanded(
child: new Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0f),
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: new List<Widget> {
new Text(this.colorName),
new Padding(padding: EdgeInsets.only(top: 8.0f)),
new Text(
"Buy this cool color",
style: new TextStyle(
color: new Color(0xf8E8E93),
fontSize: 13.0f,
fontWeight: FontWeight.w300
)
)
}
)
)
),
new CupertinoButton(
padding: EdgeInsets.zero,
child: new Icon(CupertinoIcons.plus_circled
),
onPressed: () => { }
),
new CupertinoButton(
padding: EdgeInsets.zero,
child: new Icon(CupertinoIcons.share
),
onPressed: () => { }
)
}
)
)
)
);
if (this.lastItem) {
return row;
}
return new Column(
children: new List<Widget> {
row,
new Container(
height: 1.0f,
color: new Color(0xfD9D9D9)
)
}
);
}
}
class Tab1ItemPage : StatefulWidget {
public Tab1ItemPage(
Color color,
string colorName,
int index
) {
this.color = color;
this.colorName = colorName;
this.index = index;
}
public readonly Color color;
public readonly string colorName;
public readonly int index;
public override State createState() {
return new Tab1ItemPageState();
}
}
class Tab1ItemPageState : State<Tab1ItemPage> {
public override void initState() {
base.initState();
for (int i = 0; i < 10; i++) {
this.relatedColors.Add(
Color.fromARGB(
255, this.widget.color.red + Random.Range(0, 50).clamp(0, 255),
this.widget.color.green + Random.Range(0, 50).clamp(0, 255),
this.widget.color.blue + Random.Range(0, 50).clamp(0, 255)
)
);
}
}
List<Color> relatedColors;
public override Widget build(BuildContext context) {
return new CupertinoPageScaffold(
navigationBar: new CupertinoNavigationBar(
trailing: new ExitButton()
),
child: new SafeArea(
top: false,
bottom: false,
child: new ListView(
children: new List<Widget> {
new Padding(padding: EdgeInsets.only(top: 16.0f)),
new Padding(
padding: EdgeInsets.symmetric(horizontal: 16.0f),
child: new Row(
mainAxisSize: MainAxisSize.max,
children: new List<Widget> {
new Container(
height: 128.0f,
width: 128.0f,
decoration: new BoxDecoration(
color: this.widget.color,
borderRadius: BorderRadius.circular(24.0f)
)
),
new Padding(padding: EdgeInsets.only(left: 18.0f)),
new Expanded(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: new List<Widget> {
new Text(this.widget.colorName,
style: new TextStyle(fontSize: 24.0f,
fontWeight: FontWeight.bold)
),
new Padding(padding: EdgeInsets.only(top: 6.0f)),
new Text(
"Item number ${widget.index}",
style: new TextStyle(
color: new Color(0xf8E8E93),
fontSize: 16.0f,
fontWeight: FontWeight.w100
)
),
new Padding(padding: EdgeInsets.only(top: 20.0f)),
new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: new List<Widget> {
CupertinoButton.filled(
minSize: 30.0f,
padding: EdgeInsets.symmetric(horizontal: 24.0f),
borderRadius: BorderRadius.circular(32.0f),
child: new Text(
"GET",
style: new TextStyle(
fontSize: 14.0f,
fontWeight: FontWeight.w700,
letterSpacing: -0.28f
)
),
onPressed: () => { }
),
CupertinoButton.filled(
minSize: 30.0f,
padding: EdgeInsets.zero,
borderRadius: BorderRadius.circular(32.0f),
child: new Icon(CupertinoIcons.ellipsis),
onPressed: () => { }
)
}
)
}
)
)
}
)
),
new Padding(
padding: EdgeInsets.only(left: 16.0f, top: 28.0f, bottom: 8.0f),
child: new Text(
"USERS ALSO LIKED",
style: new TextStyle(
color: new Color(0xf646464),
letterSpacing: -0.60f,
fontSize: 15.0f,
fontWeight: FontWeight.w500
)
)
),
new SizedBox(
height: 200.0f,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 10,
itemExtent: 160.0f,
itemBuilder: (BuildContext _context, int index) => {
return new Padding(
padding: EdgeInsets.only(left: 16.0f),
child: new Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.circular(8.0f),
color: this.relatedColors[index]
),
child: new Center(
child: new CupertinoButton(
child: new Icon(
CupertinoIcons.plus_circled,
color: CupertinoColors.white,
size: 36.0f
),
onPressed: () => { }
)
)
)
);
}
)
),
}
)
)
);
}
}
class CupertinoDemoTab2 : StatelessWidget {
public override Widget build(BuildContext context) {
var listViewList = new List<Widget>();
listViewList.Add(new Tab2Header());
listViewList.AddRange(CupertinoNavigationDemoUtils.buildTab2Conversation());
return new CupertinoPageScaffold(
navigationBar: new CupertinoNavigationBar(
trailing: CupertinoNavigationDemoUtils.trailingButtons
),
child: new ListView(
children: listViewList
)
);
}
}
class Tab2Header : StatelessWidget {
public override Widget build(BuildContext context) {
return new Padding(
padding: EdgeInsets.all(16.0f),
child: new SafeArea(
top: false,
bottom: false,
child: new ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(16.0f)),
child: new Column(
mainAxisSize: MainAxisSize.min,
children: new List<Widget> {
new Container(
decoration: new BoxDecoration(
color: new Color(0xfE5E5E5)
),
child: new Padding(
padding: EdgeInsets.symmetric(horizontal: 18.0f, vertical: 12.0f),
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: new List<Widget> {
new Text(
"SUPPORT TICKET",
style: new TextStyle(
color: new Color(0xf646464),
letterSpacing: -0.9f,
fontSize: 14.0f,
fontWeight: FontWeight.w500
)
),
new Text(
"Show More",
style: new TextStyle(
color: new Color(0xf646464),
letterSpacing: -0.6f,
fontSize: 12.0f,
fontWeight: FontWeight.w500
)
)
}
)
)
),
new Container(
decoration: new BoxDecoration(
color: new Color(0xfF3F3F3)
),
child: new Padding(
padding: EdgeInsets.symmetric(horizontal: 18.0f, vertical: 12.0f),
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: new List<Widget> {
new Text(
"Product or product packaging damaged during transit",
style: new TextStyle(
fontSize: 16.0f,
fontWeight: FontWeight.w700,
letterSpacing: -0.46f
)
),
new Padding(padding: EdgeInsets.only(top: 16.0f)),
new Text(
"REVIEWERS",
style: new TextStyle(
color: new Color(0xf646464),
fontSize: 12.0f,
letterSpacing: -0.6f,
fontWeight: FontWeight.w500
)
),
new Padding(padding: EdgeInsets.only(top: 8.0f)),
new Row(
children: new List<Widget> {
new Container(
width: 44.0f,
height: 44.0f,
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage(
"people/square/trevor"
)
),
shape: BoxShape.circle
)
),
new Padding(padding: EdgeInsets.only(left: 8.0f)),
new Container(
width: 44.0f,
height: 44.0f,
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage(
"people/square/sandra"
)
),
shape: BoxShape.circle
)
),
new Padding(padding: EdgeInsets.only(left: 2.0f)),
new Icon(
CupertinoIcons.check_mark_circled,
color: new Color(0xf646464),
size: 20.0f
)
}
)
}
)
)
)
}
)
)
)
);
}
}
enum Tab2ConversationBubbleColor {
blue,
gray,
}
class Tab2ConversationBubble : StatelessWidget {
public Tab2ConversationBubble(
string text,
Tab2ConversationBubbleColor color
) {
this.text = text;
this.color = color;
}
public readonly string text;
public readonly Tab2ConversationBubbleColor color;
public override Widget build(BuildContext context) {
return new Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(18.0f)),
color: this.color == Tab2ConversationBubbleColor.blue
? CupertinoColors.activeBlue
: CupertinoColors.lightBackgroundGray
),
margin: EdgeInsets.symmetric(horizontal: 8.0f, vertical: 8.0f),
padding: EdgeInsets.symmetric(horizontal: 14.0f, vertical: 10.0f),
child: new Text(this.text,
style: new TextStyle(
color: this.color == Tab2ConversationBubbleColor.blue
? CupertinoColors.white
: CupertinoColors.black,
letterSpacing: -0.4f,
fontSize: 15.0f,
fontWeight: FontWeight.w400
)
)
);
}
}
class Tab2ConversationAvatar : StatelessWidget {
public Tab2ConversationAvatar(
string text,
Color color
) {
this.text = text;
this.color = color;
}
public readonly string text;
public readonly Color color;
public override Widget build(BuildContext context) {
return new Container(
decoration: new BoxDecoration(
shape: BoxShape.circle,
gradient: new LinearGradient(
begin: Alignment.topCenter, // FractionalOfset.topCenter,
end: Alignment.bottomCenter, // FractionalOfset.bottomCenter,
colors: new List<Color> {
this.color,
Color.fromARGB(this.color.alpha,
(this.color.red - 60).clamp(0, 255),
(this.color.green - 60).clamp(0, 255),
(this.color.blue - 60).clamp(0, 255)
)
}
)
),
margin: EdgeInsets.only(left: 8.0f, bottom: 8.0f),
padding: EdgeInsets.all(12.0f),
child: new Text(this.text,
style: new TextStyle(
color: CupertinoColors.white,
fontSize: 13.0f,
fontWeight: FontWeight.w500
)
)
);
}
}
class Tab2ConversationRow : StatelessWidget {
public Tab2ConversationRow(
string text,
Tab2ConversationAvatar avatar = null
) {
this.avatar = avatar;
this.text = text;
}
public readonly Tab2ConversationAvatar avatar;
public readonly string text;
public override Widget build(BuildContext context) {
List<Widget> children = new List<Widget>();
if (this.avatar != null) {
children.Add(this.avatar);
}
bool isSelf = this.avatar == null;
children.Add(
new Tab2ConversationBubble(
text: this.text,
color: isSelf
? Tab2ConversationBubbleColor.blue
: Tab2ConversationBubbleColor.gray
)
);
return new SafeArea(
child: new Row(
mainAxisAlignment: isSelf ? MainAxisAlignment.end : MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: isSelf ? CrossAxisAlignment.center : CrossAxisAlignment.end,
children: children
)
);
}
}
class CupertinoDemoTab3 : StatelessWidget {
public override Widget build(BuildContext context) {
return new CupertinoPageScaffold(
navigationBar: new CupertinoNavigationBar(
trailing: CupertinoNavigationDemoUtils.trailingButtons
),
child: new DecoratedBox(
decoration: new BoxDecoration(
color: CupertinoTheme.of(context).brightness == Brightness.light
? CupertinoColors.extraLightBackgroundGray
: CupertinoColors.darkBackgroundGray
),
child: new ListView(
children: new List<Widget> {
new Padding(padding: EdgeInsets.only(top: 32.0f)),
new GestureDetector(
onTap: () => {
Navigator.of(context, rootNavigator: true).push(
new CupertinoPageRoute(
fullscreenDialog: true,
builder: (BuildContext _context) => new Tab3Dialog()
)
);
},
child: new Container(
decoration: new BoxDecoration(
color: CupertinoTheme.of(context).scaffoldBackgroundColor,
border: new Border(
top: new BorderSide(color: new Color(0xfBCBBC1), width: 0.0f),
bottom: new BorderSide(color: new Color(0xfBCBBC1), width: 0.0f)
)
),
height: 44.0f,
child: new Padding(
padding: EdgeInsets.symmetric(horizontal: 16.0f, vertical: 8.0f),
child: new SafeArea(
top: false,
bottom: false,
child: new Row(
children: new List<Widget> {
new Text(
"Sign in",
style: new TextStyle(color: CupertinoTheme.of(context)
.primaryColor)
),
}
)
)
)
)
)
}
)
)
);
}
}
class Tab3Dialog : StatelessWidget {
public override Widget build(BuildContext context) {
return new CupertinoPageScaffold(
navigationBar: new CupertinoNavigationBar(
leading: new CupertinoButton(
child: new Text("Cancel"),
padding: EdgeInsets.zero,
onPressed: () => { Navigator.of(context).pop(false); }
)
),
child: new Center(
child: new Column(
mainAxisSize: MainAxisSize.min,
children: new List<Widget> {
new Icon(
CupertinoIcons.profile_circled,
size: 160.0f,
color: new Color(0xf646464)
),
new Padding(padding: EdgeInsets.only(top: 18.0f)),
CupertinoButton.filled(
child: new Text("Sign in"),
onPressed: () => { Navigator.pop(context); }
),
}
)
)
);
}
}
}

2
Samples/UIWidgetsGallery/demo/cupertino/cupertino_navigation_demo.cs.meta


fileFormatVersion: 2
guid: 9d0fe47e7d9d146ba97b488de16fe828
guid: d5de5bf11a3f04d208266b21a0acda47
MonoImporter:
externalObjects: {}
serializedVersion: 2

1
Samples/UIWidgetsGallery/demo/cupertino/cupertino_slider_demo.cs


value: this._value,
min: 0.0f,
max: 100.0f,
divisions: 100, // TODO: FIX BUG
onChanged: (float value) => {
this.setState(() => { this._value = value; });
}

20
Samples/UIWidgetsGallery/gallery/demos.cs


// documentationUrl: "https://docs.flutter.io/flutter/cupertino/CupertinoActivityIndicator-class.html",
// buildRoute: (BuildContext context) => CupertinoProgressIndicatorDemo()
// ),
// new GalleryDemo(
// title: "Alerts",
// icon: GalleryIcons.dialogs,
// category: GalleryDemoCategory._kCupertinoComponents,
// routeName: CupertinoAlertDemo.routeName,
// documentationUrl: "https://docs.flutter.io/flutter/cupertino/showCupertinoDialog.html",
// buildRoute: (BuildContext context) => CupertinoAlertDemo()
// ),
new GalleryDemo(
title: "Alerts",
icon: GalleryIcons.dialogs,
category: _kCupertinoComponents,
routeName: CupertinoAlertDemo.routeName,
documentationUrl: "https://docs.flutter.io/flutter/cupertino/showCupertinoDialog.html",
buildRoute: (BuildContext context) => new CupertinoAlertDemo()
),
new GalleryDemo(
title: "Buttons",
icon: GalleryIcons.generic_buttons,

// new GalleryDemo(
// title: "Navigation",
// icon: GalleryIcons.bottom_navigation,
// category: GalleryDemoCategory._kCupertinoComponents,
// category: _kCupertinoComponents,
// buildRoute: (BuildContext context) => CupertinoNavigationDemo()
// buildRoute: (BuildContext context) => new CupertinoNavigationDemo()
// ),
// new GalleryDemo(
// title: "Pickers",

1001
Runtime/cupertino/action_sheet.cs
文件差异内容过多而无法显示
查看文件

11
Runtime/cupertino/action_sheet.cs.meta


fileFormatVersion: 2
guid: ea4f1fabac9a048f085e528a41c2415d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

1001
Runtime/cupertino/dialog.cs
文件差异内容过多而无法显示
查看文件

11
Runtime/cupertino/dialog.cs.meta


fileFormatVersion: 2
guid: e184ed6bf781845be961798e888aa6ef
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存