您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
135 行
3.1 KiB
135 行
3.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ChatComponents;
|
|
using uiwidgets;
|
|
using Unity.UIWidgets.animation;
|
|
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 Image = Unity.UIWidgets.widgets.Image;
|
|
|
|
namespace UIWidgetsSample
|
|
{
|
|
public abstract class Conditional
|
|
{
|
|
/// Creates a new platform appropriate conditional.
|
|
///
|
|
/// Creates an `IOConditional` if `dart:io` is available and a `BrowserConditional` if
|
|
/// `dart:html` is available, otherwise it will throw an unsupported error.
|
|
public Conditional() => createConditional();
|
|
|
|
/// Returns an appropriate platform ImageProvider for specified URI
|
|
public abstract ImageProvider getProvider(string uri);
|
|
|
|
public abstract BaseConditional createConditional();
|
|
}
|
|
|
|
public abstract class BaseConditional : Conditional
|
|
{
|
|
public override BaseConditional createConditional() => new BrowserConditional();
|
|
/*BaseConditional createConditional() =>
|
|
throw UnsupportedError('Cannot create a conditional');*/
|
|
}
|
|
|
|
|
|
|
|
|
|
/// A conditional for browser
|
|
class BrowserConditional : BaseConditional
|
|
{
|
|
/// Returns [NetworkImage] if URI starts with http
|
|
/// otherwise returns transparent image
|
|
public override ImageProvider getProvider(string uri)
|
|
{
|
|
if ( uri.StartsWith("http") || uri.StartsWith("blob")) {
|
|
return new NetworkImage(uri);
|
|
}
|
|
else {
|
|
return new MemoryImage(ConditionalUtils.kTransparentImage);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class ConditionalUtils
|
|
{
|
|
/// Transparent image data
|
|
public static byte[] kTransparentImage = nums.SelectMany(BitConverter.GetBytes).ToArray();
|
|
|
|
public static List<Int32> nums = new List<Int32>()
|
|
{
|
|
0x89,
|
|
0x50,
|
|
0x4E,
|
|
0x47,
|
|
0x0D,
|
|
0x0A,
|
|
0x1A,
|
|
0x0A,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x0D,
|
|
0x49,
|
|
0x48,
|
|
0x44,
|
|
0x52,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x01,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x01,
|
|
0x08,
|
|
0x06,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x1F,
|
|
0x15,
|
|
0xC4,
|
|
0x89,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x0A,
|
|
0x49,
|
|
0x44,
|
|
0x41,
|
|
0x54,
|
|
0x78,
|
|
0x9C,
|
|
0x63,
|
|
0x00,
|
|
0x01,
|
|
0x00,
|
|
0x00,
|
|
0x05,
|
|
0x00,
|
|
0x01,
|
|
0x0D,
|
|
0x0A,
|
|
0x2D,
|
|
0xB4,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x49,
|
|
0x45,
|
|
0x4E,
|
|
0x44,
|
|
0xAE,
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|