runZoned<R> 静态方法
- R body()?,
- {)?,
- String
- Directory getCurrentDirectory()?,)?,
- void setCurrentDirectory(
- Directory getSystemTempDirectory()?,)?,
- File createFile()?,
- Future<
FileStat> stat()?, - FileStat statSync()?,
- Future<
bool> fseIdentical()?, - bool fseIdenticalSync()?,
- bool)?,
- FileSystemEntityType fseGetTypeSync()?,
- int
- bool fsWatchIsSupported()?,)?,
- Link createLink(
- Future<
Socket> socketConnect(, - Stream<
FileSystemEvent> fsWatch(, { - dynamic
- dynamic sourceAddress,
- int sourcePort,
- Future<
- Duration? timeout,
- Future<
Socket> socketConnect(, - Stream<
FileSystemEvent> fsWatch(, { - dynamic
- dynamic sourceAddress,
- Future<
- Future<
ConnectionTask< socketStartConnect(Socket> >- Future<
Socket> socketConnect(, - Stream<
FileSystemEvent> fsWatch(, { - Future<
ServerSocket> serverSocketBind( - bool v6Only,
- Future<
- Stdin stdin()?,
- Stdout stdout()?,
- Stdout stderr()?,
使用提供的覆盖设置,在新的 Zone 中运行 body
。
有关可选参数的功能信息,请参阅 IOOverrides 对应方法的文档。
实现
static R runZoned<R>(R body(),
{
// Directory
Directory Function(String)? createDirectory,
Directory Function()? getCurrentDirectory,
void Function(String)? setCurrentDirectory,
Directory Function()? getSystemTempDirectory,
// File
File Function(String)? createFile,
// FileStat
Future<FileStat> Function(String)? stat,
FileStat Function(String)? statSync,
// FileSystemEntity
Future<bool> Function(String, String)? fseIdentical,
bool Function(String, String)? fseIdenticalSync,
Future<FileSystemEntityType> Function(String, bool)? fseGetType,
FileSystemEntityType Function(String, bool)? fseGetTypeSync,
// _FileSystemWatcher
Stream<FileSystemEvent> Function(String, int, bool)? fsWatch,
bool Function()? fsWatchIsSupported,
// Link
Link Function(String)? createLink,
// Socket
Future<Socket> Function(dynamic, int,
{dynamic sourceAddress, int sourcePort, Duration? timeout})?
socketConnect,
Future<ConnectionTask<Socket>> Function(dynamic, int,
{dynamic sourceAddress, int sourcePort})?
socketStartConnect,
// ServerSocket
Future<ServerSocket> Function(dynamic, int,
{int backlog, bool v6Only, bool shared})?
serverSocketBind,
// Standard Streams
Stdin Function()? stdin,
Stdout Function()? stdout,
Stdout Function()? stderr}) {
// Avoid building chains of override scopes. Just copy outer scope's
// functions and `_previous`.
var current = IOOverrides.current;
_IOOverridesScope? currentScope;
if (current is _IOOverridesScope) {
currentScope = current;
current = currentScope._previous;
}
IOOverrides overrides = new _IOOverridesScope(
current,
// Directory
createDirectory ?? currentScope?._createDirectory,
getCurrentDirectory ?? currentScope?._getCurrentDirectory,
setCurrentDirectory ?? currentScope?._setCurrentDirectory,
getSystemTempDirectory ?? currentScope?._getSystemTempDirectory,
// File
createFile ?? currentScope?._createFile,
// FileStat
stat ?? currentScope?._stat,
statSync ?? currentScope?._statSync,
// FileSystemEntity
fseIdentical ?? currentScope?._fseIdentical,
fseIdenticalSync ?? currentScope?._fseIdenticalSync,
fseGetType ?? currentScope?._fseGetType,
fseGetTypeSync ?? currentScope?._fseGetTypeSync,
// _FileSystemWatcher
fsWatch ?? currentScope?._fsWatch,
fsWatchIsSupported ?? currentScope?._fsWatchIsSupported,
// Link
createLink ?? currentScope?._createLink,
// Socket
socketConnect ?? currentScope?._socketConnect,
socketStartConnect ?? currentScope?._socketStartConnect,
// ServerSocket
serverSocketBind ?? currentScope?._serverSocketBind,
// Standard streams
stdin ?? currentScope?._stdin,
stdout ?? currentScope?._stdout,
stderr ?? currentScope?._stderr,
);
return dart_async
.runZoned<R>(body, zoneValues: {_ioOverridesToken: overrides});
}