浏览代码
Merge pull request #85 from Unity-Technologies/siyaoH/1.17/demo
Merge pull request #85 from Unity-Technologies/siyaoH/1.17/demo
font & material demo/siyaoH-1.17-PlatformMessage
GitHub
4 年前
当前提交
95c0dea4
共有 14 个文件被更改,包括 1300 次插入 和 22 次删除
-
4Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/cupertino/cupertino_navigation_demo.cs
-
6Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/drawer_demo.cs
-
48Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/gallery/demos.cs
-
7com.unity.uiwidgets/Runtime/material/bottom_sheet.cs
-
6com.unity.uiwidgets/Runtime/painting/matrix_utils.cs
-
11com.unity.uiwidgets/Runtime/ui2/Matrix4.cs
-
549Samples/UIWidgetsSamples_2019_4/Assets/Scene/GalleryTest.unity
-
7Samples/UIWidgetsSamples_2019_4/Assets/Scene/GalleryTest.unity.meta
-
43Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/modal_bottom_sheet_demo.cs
-
103Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/persistent_bottom_sheet_demo.cs
-
3Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/persistent_bottom_sheet_demo.cs.meta
-
346Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/search_demo.cs
-
3Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/search_demo.cs.meta
-
186Samples/UIWidgetsSamples_2019_4/Assets/UIWidgetsGallery/demo/material/tabs_fab_demo.cs
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!29 &1 |
|||
OcclusionCullingSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 2 |
|||
m_OcclusionBakeSettings: |
|||
smallestOccluder: 5 |
|||
smallestHole: 0.25 |
|||
backfaceThreshold: 100 |
|||
m_SceneGUID: 00000000000000000000000000000000 |
|||
m_OcclusionCullingData: {fileID: 0} |
|||
--- !u!104 &2 |
|||
RenderSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 9 |
|||
m_Fog: 0 |
|||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
|||
m_FogMode: 3 |
|||
m_FogDensity: 0.01 |
|||
m_LinearFogStart: 0 |
|||
m_LinearFogEnd: 300 |
|||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} |
|||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} |
|||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} |
|||
m_AmbientIntensity: 1 |
|||
m_AmbientMode: 0 |
|||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} |
|||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} |
|||
m_HaloStrength: 0.5 |
|||
m_FlareStrength: 1 |
|||
m_FlareFadeSpeed: 3 |
|||
m_HaloTexture: {fileID: 0} |
|||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} |
|||
m_DefaultReflectionMode: 0 |
|||
m_DefaultReflectionResolution: 128 |
|||
m_ReflectionBounces: 1 |
|||
m_ReflectionIntensity: 1 |
|||
m_CustomReflection: {fileID: 0} |
|||
m_Sun: {fileID: 0} |
|||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} |
|||
m_UseRadianceAmbientProbe: 0 |
|||
--- !u!157 &3 |
|||
LightmapSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 11 |
|||
m_GIWorkflowMode: 1 |
|||
m_GISettings: |
|||
serializedVersion: 2 |
|||
m_BounceScale: 1 |
|||
m_IndirectOutputScale: 1 |
|||
m_AlbedoBoost: 1 |
|||
m_EnvironmentLightingMode: 0 |
|||
m_EnableBakedLightmaps: 1 |
|||
m_EnableRealtimeLightmaps: 0 |
|||
m_LightmapEditorSettings: |
|||
serializedVersion: 12 |
|||
m_Resolution: 2 |
|||
m_BakeResolution: 40 |
|||
m_AtlasSize: 1024 |
|||
m_AO: 0 |
|||
m_AOMaxDistance: 1 |
|||
m_CompAOExponent: 1 |
|||
m_CompAOExponentDirect: 0 |
|||
m_ExtractAmbientOcclusion: 0 |
|||
m_Padding: 2 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_LightmapsBakeMode: 1 |
|||
m_TextureCompression: 1 |
|||
m_FinalGather: 0 |
|||
m_FinalGatherFiltering: 1 |
|||
m_FinalGatherRayCount: 256 |
|||
m_ReflectionCompression: 2 |
|||
m_MixedBakeMode: 2 |
|||
m_BakeBackend: 1 |
|||
m_PVRSampling: 1 |
|||
m_PVRDirectSampleCount: 32 |
|||
m_PVRSampleCount: 512 |
|||
m_PVRBounces: 2 |
|||
m_PVREnvironmentSampleCount: 256 |
|||
m_PVREnvironmentReferencePointCount: 2048 |
|||
m_PVRFilteringMode: 1 |
|||
m_PVRDenoiserTypeDirect: 1 |
|||
m_PVRDenoiserTypeIndirect: 1 |
|||
m_PVRDenoiserTypeAO: 1 |
|||
m_PVRFilterTypeDirect: 0 |
|||
m_PVRFilterTypeIndirect: 0 |
|||
m_PVRFilterTypeAO: 0 |
|||
m_PVREnvironmentMIS: 1 |
|||
m_PVRCulling: 1 |
|||
m_PVRFilteringGaussRadiusDirect: 1 |
|||
m_PVRFilteringGaussRadiusIndirect: 5 |
|||
m_PVRFilteringGaussRadiusAO: 2 |
|||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5 |
|||
m_PVRFilteringAtrousPositionSigmaIndirect: 2 |
|||
m_PVRFilteringAtrousPositionSigmaAO: 1 |
|||
m_ExportTrainingData: 0 |
|||
m_TrainingDataDestination: TrainingData |
|||
m_LightProbeSampleCountMultiplier: 4 |
|||
m_LightingDataAsset: {fileID: 0} |
|||
m_UseShadowmask: 1 |
|||
--- !u!196 &4 |
|||
NavMeshSettings: |
|||
serializedVersion: 2 |
|||
m_ObjectHideFlags: 0 |
|||
m_BuildSettings: |
|||
serializedVersion: 2 |
|||
agentTypeID: 0 |
|||
agentRadius: 0.5 |
|||
agentHeight: 2 |
|||
agentSlope: 45 |
|||
agentClimb: 0.4 |
|||
ledgeDropHeight: 0 |
|||
maxJumpAcrossDistance: 0 |
|||
minRegionArea: 2 |
|||
manualCellSize: 0 |
|||
cellSize: 0.16666667 |
|||
manualTileSize: 0 |
|||
tileSize: 256 |
|||
accuratePlacement: 0 |
|||
debug: |
|||
m_Flags: 0 |
|||
m_NavMeshData: {fileID: 0} |
|||
--- !u!1 &764046566 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 764046568} |
|||
- component: {fileID: 764046567} |
|||
m_Layer: 0 |
|||
m_Name: Directional Light |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!108 &764046567 |
|||
Light: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 764046566} |
|||
m_Enabled: 1 |
|||
serializedVersion: 10 |
|||
m_Type: 1 |
|||
m_Shape: 0 |
|||
m_Color: {r: 1, g: 1, b: 1, a: 1} |
|||
m_Intensity: 1 |
|||
m_Range: 10 |
|||
m_SpotAngle: 30 |
|||
m_InnerSpotAngle: 21.80208 |
|||
m_CookieSize: 10 |
|||
m_Shadows: |
|||
m_Type: 2 |
|||
m_Resolution: -1 |
|||
m_CustomResolution: -1 |
|||
m_Strength: 1 |
|||
m_Bias: 0.05 |
|||
m_NormalBias: 0.4 |
|||
m_NearPlane: 0.2 |
|||
m_CullingMatrixOverride: |
|||
e00: 1 |
|||
e01: 0 |
|||
e02: 0 |
|||
e03: 0 |
|||
e10: 0 |
|||
e11: 1 |
|||
e12: 0 |
|||
e13: 0 |
|||
e20: 0 |
|||
e21: 0 |
|||
e22: 1 |
|||
e23: 0 |
|||
e30: 0 |
|||
e31: 0 |
|||
e32: 0 |
|||
e33: 1 |
|||
m_UseCullingMatrixOverride: 0 |
|||
m_Cookie: {fileID: 0} |
|||
m_DrawHalo: 0 |
|||
m_Flare: {fileID: 0} |
|||
m_RenderMode: 0 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingLayerMask: 1 |
|||
m_Lightmapping: 4 |
|||
m_LightShadowCasterMode: 0 |
|||
m_AreaSize: {x: 1, y: 1} |
|||
m_BounceIntensity: 1 |
|||
m_ColorTemperature: 6570 |
|||
m_UseColorTemperature: 0 |
|||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} |
|||
m_UseBoundingSphereOverride: 0 |
|||
m_ShadowRadius: 0 |
|||
m_ShadowAngle: 0 |
|||
--- !u!4 &764046568 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 764046566} |
|||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} |
|||
m_LocalPosition: {x: 0, y: 3, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} |
|||
--- !u!1 &847097468 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 847097469} |
|||
- component: {fileID: 847097471} |
|||
- component: {fileID: 847097470} |
|||
m_Layer: 5 |
|||
m_Name: RawImage |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!224 &847097469 |
|||
RectTransform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 847097468} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 2122288190} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
m_AnchorMin: {x: 0, y: 0} |
|||
m_AnchorMax: {x: 1, y: 1} |
|||
m_AnchoredPosition: {x: 0, y: 0} |
|||
m_SizeDelta: {x: 0, y: 0} |
|||
m_Pivot: {x: 0.5, y: 0.5} |
|||
--- !u!114 &847097470 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 847097468} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 9c5c86936ca864ae684720ddcd50d759, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_Material: {fileID: 0} |
|||
m_Color: {r: 1, g: 1, b: 1, a: 1} |
|||
m_RaycastTarget: 1 |
|||
m_Maskable: 1 |
|||
m_OnCullStateChanged: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
m_Texture: {fileID: 0} |
|||
m_UVRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
fonts: |
|||
- family: Material Icons |
|||
fonts: |
|||
- asset: MaterialIcons-Regular.ttf |
|||
weight: 0 |
|||
- family: CupertinoIcons |
|||
fonts: |
|||
- asset: CupertinoIcons.ttf |
|||
weight: 0 |
|||
- family: GalleryIcons |
|||
fonts: |
|||
- asset: gallery/GalleryIcons.ttf |
|||
weight: 0 |
|||
devicePixelRatioOverride: 1 |
|||
hardwareAntiAliasing: 0 |
|||
--- !u!222 &847097471 |
|||
CanvasRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 847097468} |
|||
m_CullTransparentMesh: 0 |
|||
--- !u!1 &1548023132 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1548023135} |
|||
- component: {fileID: 1548023134} |
|||
- component: {fileID: 1548023133} |
|||
m_Layer: 0 |
|||
m_Name: Main Camera |
|||
m_TagString: MainCamera |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!81 &1548023133 |
|||
AudioListener: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1548023132} |
|||
m_Enabled: 1 |
|||
--- !u!20 &1548023134 |
|||
Camera: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1548023132} |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_ClearFlags: 1 |
|||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
|||
m_projectionMatrixMode: 1 |
|||
m_GateFitMode: 2 |
|||
m_FOVAxisMode: 0 |
|||
m_SensorSize: {x: 36, y: 24} |
|||
m_LensShift: {x: 0, y: 0} |
|||
m_FocalLength: 50 |
|||
m_NormalizedViewPortRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
near clip plane: 0.3 |
|||
far clip plane: 1000 |
|||
field of view: 60 |
|||
orthographic: 1 |
|||
orthographic size: 5.6 |
|||
m_Depth: -1 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingPath: -1 |
|||
m_TargetTexture: {fileID: 0} |
|||
m_TargetDisplay: 0 |
|||
m_TargetEye: 3 |
|||
m_HDR: 1 |
|||
m_AllowMSAA: 1 |
|||
m_AllowDynamicResolution: 0 |
|||
m_ForceIntoRT: 0 |
|||
m_OcclusionCulling: 1 |
|||
m_StereoConvergence: 10 |
|||
m_StereoSeparation: 0.022 |
|||
--- !u!4 &1548023135 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1548023132} |
|||
m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0} |
|||
m_LocalPosition: {x: 0, y: 1, z: 0.32} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0} |
|||
--- !u!1 &1900497009 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1900497012} |
|||
- component: {fileID: 1900497011} |
|||
- component: {fileID: 1900497010} |
|||
m_Layer: 0 |
|||
m_Name: EventSystem |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &1900497010 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1900497009} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_HorizontalAxis: Horizontal |
|||
m_VerticalAxis: Vertical |
|||
m_SubmitButton: Submit |
|||
m_CancelButton: Cancel |
|||
m_InputActionsPerSecond: 10 |
|||
m_RepeatDelay: 0.5 |
|||
m_ForceModuleActive: 0 |
|||
--- !u!114 &1900497011 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1900497009} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_FirstSelected: {fileID: 0} |
|||
m_sendNavigationEvents: 1 |
|||
m_DragThreshold: 10 |
|||
--- !u!4 &1900497012 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1900497009} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 3 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &2122288186 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 2122288190} |
|||
- component: {fileID: 2122288189} |
|||
- component: {fileID: 2122288188} |
|||
- component: {fileID: 2122288187} |
|||
m_Layer: 5 |
|||
m_Name: Canvas |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &2122288187 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_IgnoreReversedGraphics: 1 |
|||
m_BlockingObjects: 0 |
|||
m_BlockingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
--- !u!114 &2122288188 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_UiScaleMode: 0 |
|||
m_ReferencePixelsPerUnit: 100 |
|||
m_ScaleFactor: 1 |
|||
m_ReferenceResolution: {x: 800, y: 600} |
|||
m_ScreenMatchMode: 0 |
|||
m_MatchWidthOrHeight: 0 |
|||
m_PhysicalUnit: 3 |
|||
m_FallbackScreenDPI: 96 |
|||
m_DefaultSpriteDPI: 96 |
|||
m_DynamicPixelsPerUnit: 1 |
|||
--- !u!223 &2122288189 |
|||
Canvas: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_Enabled: 1 |
|||
serializedVersion: 3 |
|||
m_RenderMode: 0 |
|||
m_Camera: {fileID: 0} |
|||
m_PlaneDistance: 100 |
|||
m_PixelPerfect: 0 |
|||
m_ReceivesEvents: 1 |
|||
m_OverrideSorting: 0 |
|||
m_OverridePixelPerfect: 0 |
|||
m_SortingBucketNormalizedSize: 0 |
|||
m_AdditionalShaderChannelsFlag: 0 |
|||
m_SortingLayerID: 0 |
|||
m_SortingOrder: 0 |
|||
m_TargetDisplay: 0 |
|||
--- !u!224 &2122288190 |
|||
RectTransform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 0, y: 0, z: 0} |
|||
m_Children: |
|||
- {fileID: 847097469} |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 2 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
m_AnchorMin: {x: 0, y: 0} |
|||
m_AnchorMax: {x: 0, y: 0} |
|||
m_AnchoredPosition: {x: 0, y: 0} |
|||
m_SizeDelta: {x: 0, y: 0} |
|||
m_Pivot: {x: 0, y: 0} |
|
|||
fileFormatVersion: 2 |
|||
guid: 27915d755e23b4d4a893865b51d5203b |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System.Collections.Generic; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using TextStyle = Unity.UIWidgets.painting.TextStyle; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
public class ModalBottomSheetDemo : StatelessWidget { |
|||
public const string routeName = "/material/modal-bottom-sheet"; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
appBar: new AppBar( |
|||
title: new Text("Modal bottom sheet"), |
|||
actions: new List<Widget> {new MaterialDemoDocumentationButton(routeName)} |
|||
), |
|||
body: new Center( |
|||
child: new RaisedButton( |
|||
child: new Text("SHOW BOTTOM SHEET"), |
|||
onPressed: () => { |
|||
material_.showModalBottomSheet<object>(context: context, |
|||
builder: (BuildContext _context) => { |
|||
return new Container( |
|||
child: new Padding( |
|||
padding: EdgeInsets.all(32.0f), |
|||
child: new Text("This is the modal bottom sheet. Tap anywhere to dismiss.", |
|||
textAlign: TextAlign.center, |
|||
style: new TextStyle( |
|||
color: Theme.of(_context).accentColor, |
|||
fontSize: 24.0f |
|||
) |
|||
) |
|||
) |
|||
); |
|||
}); |
|||
} |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
} |
|
|||
using System.Collections.Generic; |
|||
using uiwidgets; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using TextStyle = Unity.UIWidgets.painting.TextStyle; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
public class PersistentBottomSheetDemo : StatefulWidget { |
|||
public const string routeName = "/material/persistent-bottom-sheet"; |
|||
|
|||
public override State createState() { |
|||
return new _PersistentBottomSheetDemoState(); |
|||
} |
|||
} |
|||
|
|||
class _PersistentBottomSheetDemoState : State<PersistentBottomSheetDemo> { |
|||
GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>.key(); |
|||
|
|||
VoidCallback _showBottomSheetCallback; |
|||
|
|||
public override void initState() { |
|||
base.initState(); |
|||
this._showBottomSheetCallback = this._showBottomSheet; |
|||
} |
|||
|
|||
void _showBottomSheet() { |
|||
this.setState(() => { |
|||
// disable the button
|
|||
this._showBottomSheetCallback = null; |
|||
}); |
|||
this._scaffoldKey.currentState.showBottomSheet((BuildContext context) => { |
|||
ThemeData themeData = Theme.of(this.context); |
|||
return new Container( |
|||
decoration: new BoxDecoration( |
|||
border: new Border(top: new BorderSide(color: themeData.disabledColor)) |
|||
), |
|||
child: new Padding( |
|||
padding: EdgeInsets.all(32.0f), |
|||
child: new Text("This is a Material persistent bottom sheet. Drag downwards to dismiss it.", |
|||
textAlign: TextAlign.center, |
|||
style: new TextStyle( |
|||
color: themeData.accentColor, |
|||
fontSize: 24.0f |
|||
) |
|||
) |
|||
) |
|||
); |
|||
}) |
|||
.closed.then((value) => { |
|||
if (this.mounted) { |
|||
this.setState(() => { |
|||
// re-enable the button
|
|||
this._showBottomSheetCallback = this._showBottomSheet; |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
void _showMessage() { |
|||
DialogUtils.showGeneralDialog<object>( |
|||
context: this.context, |
|||
pageBuilder: ( context, _, __) => { |
|||
return new AlertDialog( |
|||
content: new Text("You tapped the floating action button."), |
|||
actions: new List<Widget> { |
|||
new FlatButton( |
|||
onPressed: () => { Navigator.pop(context); }, |
|||
child: new Text("OK") |
|||
) |
|||
} |
|||
); |
|||
} |
|||
); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
key: this._scaffoldKey, |
|||
appBar: new AppBar( |
|||
title: new Text("Persistent bottom sheet"), |
|||
actions: new List<Widget> { |
|||
new MaterialDemoDocumentationButton(PersistentBottomSheetDemo.routeName) |
|||
} |
|||
), |
|||
floatingActionButton: new FloatingActionButton( |
|||
onPressed: this._showMessage, |
|||
backgroundColor: Colors.redAccent, |
|||
child: new Icon( |
|||
Icons.add |
|||
) |
|||
), |
|||
body: new Center( |
|||
child: new RaisedButton( |
|||
onPressed: this._showBottomSheetCallback, |
|||
child: new Text("SHOW BOTTOM SHEET") |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: c949d1ae2a444ef085b83e1a0db18cc9 |
|||
timeCreated: 1612683278 |
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using uiwidgets; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using UnityEngine; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
public class SearchDemo : StatefulWidget { |
|||
public const string routeName = "/material/search"; |
|||
|
|||
public override State createState() { |
|||
return new _SearchDemoState(); |
|||
} |
|||
} |
|||
|
|||
class _SearchDemoState : State<SearchDemo> { |
|||
readonly _SearchDemoSearchDelegate _delegate = new _SearchDemoSearchDelegate(); |
|||
readonly GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>.key(); |
|||
int? _lastIntegerSelected; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
key: this._scaffoldKey, |
|||
appBar: new AppBar( |
|||
leading: new IconButton( |
|||
tooltip: "Navigation menu", |
|||
icon: new AnimatedIcon( |
|||
icon: AnimatedIcons.arrow_menu, |
|||
color: Colors.white, |
|||
progress: this._delegate.transitionAnimation |
|||
), |
|||
onPressed: () => { this._scaffoldKey.currentState.openDrawer(); } |
|||
), |
|||
title: new Text("Numbers"), |
|||
actions: new List<Widget> { |
|||
new IconButton( |
|||
tooltip: "Search", |
|||
icon: new Icon(Icons.search), |
|||
onPressed: () => { |
|||
SearchUtils.showSearch( |
|||
context: context, |
|||
del: this._delegate |
|||
).then_((selected) => { |
|||
if (selected != null && (int) selected != this._lastIntegerSelected) { |
|||
this.setState(() => { this._lastIntegerSelected = (int) selected; }); |
|||
} |
|||
}); |
|||
} |
|||
), |
|||
new MaterialDemoDocumentationButton(SearchDemo.routeName), |
|||
new IconButton( |
|||
tooltip: "More (not implemented)", |
|||
icon: new Icon( |
|||
Theme.of(context).platform == RuntimePlatform.IPhonePlayer |
|||
? Icons.more_horiz |
|||
: Icons.more_vert |
|||
), |
|||
onPressed: () => { } |
|||
) |
|||
} |
|||
), |
|||
body: new Center( |
|||
child: new Column( |
|||
mainAxisAlignment: MainAxisAlignment.center, |
|||
children: new List<Widget> { |
|||
new Column( |
|||
mainAxisAlignment: MainAxisAlignment.center, |
|||
children: new List<Widget> { |
|||
new Row( |
|||
mainAxisAlignment: MainAxisAlignment.center, |
|||
children: new List<Widget> { |
|||
new Text("Press the "), |
|||
new Tooltip( |
|||
message: "search", |
|||
child: new Icon( |
|||
Icons.search, |
|||
size: 18.0f |
|||
) |
|||
), |
|||
new Text(" icon in the AppBar") |
|||
} |
|||
), |
|||
new Text("and search for an integer between 0 and 100,000.") |
|||
} |
|||
), |
|||
new SizedBox(height: 64.0f), |
|||
new Text( |
|||
this._lastIntegerSelected == null |
|||
? $"Last selected integer: {this._lastIntegerSelected}." |
|||
: $"Last selected integer: NONE." |
|||
), |
|||
} |
|||
) |
|||
), |
|||
floatingActionButton: FloatingActionButton.extended( |
|||
tooltip: "Back", // Tests depend on this label to exit the demo.
|
|||
onPressed: () => { Navigator.of(context).pop<object>(); }, |
|||
label: |
|||
new Text("Close demo"), |
|||
icon: |
|||
new Icon(Icons.close) |
|||
), |
|||
drawer: new Drawer( |
|||
child: new Column( |
|||
children: new List<Widget> { |
|||
new UserAccountsDrawerHeader( |
|||
accountName: new Text("Peter Widget"), |
|||
accountEmail: new Text("peter.widget@example.com"), |
|||
currentAccountPicture: new CircleAvatar( |
|||
backgroundImage: new FileImage( |
|||
"gallery/people/square/peter.png" |
|||
) |
|||
), |
|||
margin: EdgeInsets.zero |
|||
), |
|||
MediaQuery.removePadding( |
|||
context: context, |
|||
// DrawerHeader consumes top MediaQuery padding.
|
|||
removeTop: true, |
|||
child: new ListTile( |
|||
leading: new Icon(Icons.payment), |
|||
title: new Text("Placeholder") |
|||
) |
|||
) |
|||
} |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _SearchDemoSearchDelegate : SearchDelegate<int> |
|||
{ |
|||
static List<int> listGenerate(int count, Func<int, int> func) { |
|||
var list = new List<int>(); |
|||
for (int i = 0; i < count; i++) { |
|||
list.Add(func(i)); |
|||
} |
|||
|
|||
list.Reverse(); |
|||
return list; |
|||
} |
|||
|
|||
readonly List<int> _data = listGenerate(100001, (int i) => i); |
|||
|
|||
readonly List<int> _history = new List<int> {42607, 85604, 66374, 44, 174}; |
|||
|
|||
public override Widget buildLeading(BuildContext context) { |
|||
return new IconButton( |
|||
tooltip: "Back", |
|||
icon: new AnimatedIcon( |
|||
icon: AnimatedIcons.arrow_menu, |
|||
progress: this.transitionAnimation |
|||
), |
|||
onPressed: () => { this.close(context, null); } |
|||
); |
|||
} |
|||
|
|||
public override Widget buildSuggestions(BuildContext context) { |
|||
List<int> suggestions; |
|||
if (this.query.isEmpty()) { |
|||
suggestions = this._history; |
|||
} |
|||
else { |
|||
suggestions = new List<int>(); |
|||
foreach (var item in this._data) { |
|||
var str = item.ToString(); |
|||
var flag = true; |
|||
if (str.Length < this.query.Length) { |
|||
continue; |
|||
} |
|||
|
|||
for (int i = 0; i < this.query.Length; i++) { |
|||
if (str[i] != this.query[i]) { |
|||
flag = false; |
|||
break; |
|||
} |
|||
} |
|||
|
|||
if (flag) { |
|||
suggestions.Add(item); |
|||
} |
|||
} |
|||
} |
|||
|
|||
List<string> suggestionStrings = new List<string>(); |
|||
foreach (var item in suggestions) { |
|||
suggestionStrings.Add(item.ToString()); |
|||
} |
|||
|
|||
return new _SuggestionList( |
|||
query: this.query, |
|||
suggestions: suggestionStrings, |
|||
onSelected: (string suggestion) => { |
|||
this.query = suggestion; |
|||
this.showResults(context); |
|||
} |
|||
); |
|||
} |
|||
|
|||
public override Widget buildResults(BuildContext context) { |
|||
int searched; |
|||
try { |
|||
searched = int.Parse(this.query); |
|||
} |
|||
catch (Exception) { |
|||
return new Center( |
|||
child: new Text( |
|||
$"{this.query}\n is not a valid integer between 0 and 100,000.\nTry again.", |
|||
textAlign: TextAlign.center |
|||
) |
|||
); |
|||
} |
|||
|
|||
if (!this._data.Contains(searched)) { |
|||
return new Center( |
|||
child: new Text( |
|||
$"{this.query}\n is not a valid integer between 0 and 100,000.\nTry again.", |
|||
textAlign: TextAlign.center |
|||
) |
|||
); |
|||
} |
|||
|
|||
return new ListView( |
|||
children: new List<Widget> { |
|||
new _ResultCard( |
|||
title: "This integer", |
|||
integer: searched, |
|||
searchDelegate: this |
|||
), |
|||
new _ResultCard( |
|||
title: "Next integer", |
|||
integer: searched + 1, |
|||
searchDelegate: this |
|||
), |
|||
new _ResultCard( |
|||
title: "Previous integer", |
|||
integer: searched - 1, |
|||
searchDelegate: this |
|||
) |
|||
} |
|||
); |
|||
} |
|||
|
|||
public override List<Widget> buildActions(BuildContext context) { |
|||
return new List<Widget> { |
|||
this.query.isEmpty() |
|||
? new IconButton( |
|||
tooltip: "Voice Search", |
|||
icon: new Icon(Icons.mic), |
|||
onPressed: () => { this.query = "TODO: implement voice input"; } |
|||
) |
|||
: new IconButton( |
|||
tooltip: "Clear", |
|||
icon: new Icon(Icons.clear), |
|||
onPressed: |
|||
() => { |
|||
this.query = ""; |
|||
this.showSuggestions(context); |
|||
} |
|||
) |
|||
}; |
|||
} |
|||
} |
|||
|
|||
class _ResultCard : StatelessWidget { |
|||
public _ResultCard( |
|||
int integer, string title, SearchDelegate<int> searchDelegate |
|||
) { |
|||
this.integer = integer; |
|||
this.title = title; |
|||
this.searchDelegate = searchDelegate; |
|||
} |
|||
|
|||
public readonly int integer; |
|||
public readonly string title; |
|||
public readonly SearchDelegate<int> searchDelegate; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
return new GestureDetector( |
|||
onTap: () => { this.searchDelegate.close(context, this.integer); }, |
|||
child: |
|||
new Card( |
|||
child: new Padding( |
|||
padding: EdgeInsets.all(8.0f), |
|||
child: new Column( |
|||
children: new List<Widget> { |
|||
new Text(this.title), |
|||
new Text(this.integer.ToString(), |
|||
style: theme.textTheme.headline.copyWith(fontSize: 72.0f) |
|||
), |
|||
} |
|||
) |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _SuggestionList : StatelessWidget { |
|||
public _SuggestionList( |
|||
List<string> suggestions, string query, ValueChanged<string> onSelected |
|||
) { |
|||
this.suggestions = suggestions; |
|||
this.query = query; |
|||
this.onSelected = onSelected; |
|||
} |
|||
|
|||
public readonly List<string> suggestions; |
|||
public readonly string query; |
|||
public readonly ValueChanged<string> onSelected; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
return ListView.builder( |
|||
itemCount: this.suggestions.Count, |
|||
itemBuilder: (BuildContext _context, int i) => { |
|||
string suggestion = this.suggestions[i]; |
|||
return new ListTile( |
|||
leading: this.query.isEmpty() ? new Icon(Icons.history) : new Icon(null), |
|||
title: new RichText( |
|||
text: new TextSpan( |
|||
text: suggestion.Substring(0, this.query.Length), |
|||
style: theme.textTheme.subhead.copyWith(fontWeight: FontWeight.bold), |
|||
children: new List<InlineSpan> |
|||
{ |
|||
new TextSpan( |
|||
text: suggestion.Substring(this.query.Length), |
|||
style: theme.textTheme.subhead |
|||
) |
|||
} |
|||
) |
|||
), |
|||
onTap: () => { this.onSelected(suggestion); } |
|||
); |
|||
} |
|||
); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 958332d4fa614f18b3d446a66cc0f93d |
|||
timeCreated: 1612682743 |
|
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using uiwidgets; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using TextStyle = Unity.UIWidgets.painting.TextStyle; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
class TabsFabDemoUtils { |
|||
public const string _explanatoryText = |
|||
"When the Scaffold's floating action button changes, the new button fades and " + |
|||
"turns into view. In this demo, changing tabs can cause the app to be rebuilt " + |
|||
"with a FloatingActionButton that the Scaffold distinguishes from the others " + |
|||
"by its key."; |
|||
|
|||
public static readonly List<_Page> _allPages = new List<_Page> { |
|||
new _Page(label: "Blue", colors: Colors.indigo, icon: Icons.add), |
|||
new _Page(label: "Eco", colors: Colors.green, icon: Icons.create), |
|||
new _Page(label: "No"), |
|||
new _Page(label: "Teal", colors: Colors.teal, icon: Icons.add), |
|||
new _Page(label: "Red", colors: Colors.red, icon: Icons.create) |
|||
}; |
|||
} |
|||
|
|||
class _Page { |
|||
public _Page( |
|||
string label, |
|||
MaterialColor colors = null, |
|||
IconData icon = null |
|||
) { |
|||
this.label = label; |
|||
this.colors = colors; |
|||
this.icon = icon; |
|||
} |
|||
|
|||
public readonly string label; |
|||
public readonly MaterialColor colors; |
|||
public readonly IconData icon; |
|||
|
|||
public Color labelColor { |
|||
get { return this.colors != null ? this.colors.shade300 : Colors.grey.shade300; } |
|||
} |
|||
|
|||
public bool fabDefined { |
|||
get { return this.colors != null && this.icon != null; } |
|||
} |
|||
|
|||
public Color fabColor { |
|||
get { return this.colors.shade400; } |
|||
} |
|||
|
|||
public Icon fabIcon { |
|||
get { return new Icon(this.icon); } |
|||
} |
|||
|
|||
public Key fabKey { |
|||
get { return new ValueKey<Color>(this.fabColor); } |
|||
} |
|||
} |
|||
|
|||
|
|||
public class TabsFabDemo : StatefulWidget { |
|||
public const string routeName = "/material/tabs-fab"; |
|||
|
|||
public override State createState() { |
|||
return new _TabsFabDemoState(); |
|||
} |
|||
} |
|||
|
|||
class _TabsFabDemoState : SingleTickerProviderStateMixin<TabsFabDemo> { |
|||
GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>.key(); |
|||
|
|||
TabController _controller; |
|||
_Page _selectedPage; |
|||
bool _extendedButtons = false; |
|||
|
|||
public override void initState() { |
|||
base.initState(); |
|||
this._controller = new TabController(vsync: this, length: TabsFabDemoUtils._allPages.Count); |
|||
this._controller.addListener(this._handleTabSelection); |
|||
this._selectedPage = TabsFabDemoUtils._allPages[0]; |
|||
} |
|||
|
|||
public override void dispose() { |
|||
this._controller.dispose(); |
|||
base.dispose(); |
|||
} |
|||
|
|||
void _handleTabSelection() { |
|||
this.setState(() => { this._selectedPage = TabsFabDemoUtils._allPages[this._controller.index]; }); |
|||
} |
|||
|
|||
void _showExplanatoryText() { |
|||
this._scaffoldKey.currentState.showBottomSheet((BuildContext context) => { |
|||
return new Container( |
|||
decoration: new BoxDecoration( |
|||
border: new Border(top: new BorderSide(color: Theme.of(this.context).dividerColor)) |
|||
), |
|||
child: new Padding( |
|||
padding: EdgeInsets.all(32.0f), |
|||
child: new Text(TabsFabDemoUtils._explanatoryText, |
|||
style: Theme.of(this.context).textTheme.subhead) |
|||
) |
|||
); |
|||
}); |
|||
} |
|||
|
|||
Widget buildTabView(_Page page) { |
|||
return new Builder( |
|||
builder: (BuildContext context) => { |
|||
return new Container( |
|||
key: new ValueKey<string>(page.label), |
|||
padding: EdgeInsets.fromLTRB(48.0f, 48.0f, 48.0f, 96.0f), |
|||
child: new Card( |
|||
child: new Center( |
|||
child: new Text(page.label, |
|||
style: new TextStyle( |
|||
color: page.labelColor, |
|||
fontSize: 32.0f |
|||
), |
|||
textAlign: TextAlign.center |
|||
) |
|||
) |
|||
) |
|||
); |
|||
} |
|||
); |
|||
} |
|||
|
|||
Widget buildFloatingActionButton(_Page page) { |
|||
if (!page.fabDefined) { |
|||
return null; |
|||
} |
|||
|
|||
if (this._extendedButtons) { |
|||
return FloatingActionButton.extended( |
|||
key: new ValueKey<Key>(page.fabKey), |
|||
tooltip: "Show explanation", |
|||
backgroundColor: page.fabColor, |
|||
icon: page.fabIcon, |
|||
label: new Text(page.label.ToUpper()), |
|||
onPressed: this._showExplanatoryText |
|||
); |
|||
} |
|||
|
|||
return new FloatingActionButton( |
|||
key: page.fabKey, |
|||
tooltip: "Show explanation", |
|||
backgroundColor: page.fabColor, |
|||
child: page.fabIcon, |
|||
onPressed: this._showExplanatoryText |
|||
); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
key: this._scaffoldKey, |
|||
appBar: new AppBar( |
|||
title: new Text("FAB per tab"), |
|||
bottom: new TabBar( |
|||
controller: this._controller, |
|||
tabs: TabsFabDemoUtils._allPages |
|||
.Select<_Page, Widget>((_Page page) => new Tab(text: page.label.ToUpper())).ToList() |
|||
), |
|||
actions: new List<Widget> { |
|||
new MaterialDemoDocumentationButton(TabsFabDemo.routeName), |
|||
new IconButton( |
|||
icon: new Icon(Icons.sentiment_very_satisfied), |
|||
onPressed: () => { |
|||
this.setState(() => { this._extendedButtons = !this._extendedButtons; }); |
|||
} |
|||
) |
|||
} |
|||
), |
|||
floatingActionButton: this.buildFloatingActionButton(this._selectedPage), |
|||
body: new TabBarView( |
|||
controller: this._controller, |
|||
children: TabsFabDemoUtils._allPages.Select<_Page, Widget>(this.buildTabView).ToList() |
|||
) |
|||
); |
|||
} |
|||
} |
|||
} |
撰写
预览
正在加载...
取消
保存
Reference in new issue