runZoned<R> 静态方法
- R body(
- { )?,
- Directory getCurrentDirectory(
- Directory setCurrentDirectory( )?,
- Directory getSystemTempDirectory(
- File createFile( )?,
- Future<
FileStat> stat( )?, - FileStat statSync( )?,
- Future<
bool> fseIdentical( )?, - bool fseIdenticalSync( )?,
- Future<
FileSystemEntityType> fseGetType( )?, - FileSystemEntityType fseGetTypeSync( )?,
- Stream<
FileSystemEvent> fsWatch( )?, - bool fsWatchIsSupported(
- Link createLink( )?,
- Future<
Socket> socketConnect( )?, - Future<
ConnectionTask< socketStartConnect( )?,Socket> > - ServerSocket<
Socket> serverSocketBind( )?, - 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});
}