More documentation (#10589)
This commit is contained in:
parent
0a8713efe0
commit
0f1a703a6b
@ -20,7 +20,7 @@ abstract class Listenable {
|
||||
/// The list must not be changed after this method has been called. Doing so
|
||||
/// will lead to memory leaks or exceptions.
|
||||
///
|
||||
/// The list may contain `null`s; they are ignored.
|
||||
/// The list may contain nulls; they are ignored.
|
||||
factory Listenable.merge(List<Listenable> listenables) = _MergingListenable;
|
||||
|
||||
/// Register a closure to be called when the object notifies its listeners.
|
||||
|
@ -109,6 +109,11 @@ class TextPainter {
|
||||
/// passed to [layout].
|
||||
///
|
||||
/// After this is set, you must call [layout] before the next call to [paint].
|
||||
///
|
||||
/// The higher layers of the system, such as the [Text] widget, represent
|
||||
/// overflow effects using the [TextOverflow] enum. The
|
||||
/// [TextOverflow.ellipsis] value corresponds to setting this property to
|
||||
/// U+2026 HORIZONTAL ELLIPSIS (…).
|
||||
String get ellipsis => _ellipsis;
|
||||
String _ellipsis;
|
||||
set ellipsis(String value) {
|
||||
|
@ -108,7 +108,11 @@ bool debugPrintMarkNeedsLayoutStacks = false;
|
||||
/// Check the intrinsic sizes of each [RenderBox] during layout.
|
||||
bool debugCheckIntrinsicSizes = false;
|
||||
|
||||
/// Adds [dart:developer.Timeline] events for every RenderObject painted.
|
||||
/// Adds [dart:developer.Timeline] events for every [RenderObject] painted.
|
||||
///
|
||||
/// This is only enabled in debug builds. The timing information this exposes is
|
||||
/// not representative of actual paints. However, it can expose unexpected
|
||||
/// painting in the timeline.
|
||||
///
|
||||
/// For details on how to use [dart:developer.Timeline] events in the Dart
|
||||
/// Observatory to optimize your app, see:
|
||||
|
@ -2401,7 +2401,7 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
||||
/// the approximate bounding box of the clip rect that would be
|
||||
/// applied to the given child during the paint phase, if any.
|
||||
///
|
||||
/// Returns `null` if the child would not be clipped.
|
||||
/// Returns null if the child would not be clipped.
|
||||
///
|
||||
/// This is used in the semantics phase to avoid including children
|
||||
/// that are not physically visible.
|
||||
|
@ -119,7 +119,7 @@ class PageStorage extends StatelessWidget {
|
||||
|
||||
/// The bucket from the closest instance of this class that encloses the given context.
|
||||
///
|
||||
/// Returns `null` if none exists.
|
||||
/// Returns null if none exists.
|
||||
///
|
||||
/// Typical usage is as follows:
|
||||
///
|
||||
|
@ -524,7 +524,7 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T
|
||||
|
||||
/// Returns the modal route most closely associated with the given context.
|
||||
///
|
||||
/// Returns `null` if the given context is not associated with a modal route.
|
||||
/// Returns null if the given context is not associated with a modal route.
|
||||
///
|
||||
/// Typical usage is as follows:
|
||||
///
|
||||
|
@ -15,7 +15,7 @@ export 'package:flutter/rendering.dart' show RelativeRect;
|
||||
|
||||
/// A widget that rebuilds when the given [Listenable] changes value.
|
||||
///
|
||||
/// [AnimatedWidget] is most common used with [Animation] objects, which are
|
||||
/// [AnimatedWidget] is most commonly used with [Animation] objects, which are
|
||||
/// [Listenable], but it can be used with any [Listenable], including
|
||||
/// [ChangeNotifier] and [ValueNotifier].
|
||||
///
|
||||
@ -450,6 +450,11 @@ typedef Widget TransitionBuilder(BuildContext context, Widget child);
|
||||
/// an animation as part of a larger build function. To use AnimatedBuilder,
|
||||
/// simply construct the widget and pass it a builder function.
|
||||
///
|
||||
/// For simple cases without additional state, consider using
|
||||
/// [AnimatedWidget].
|
||||
///
|
||||
/// ## Performance optimisations
|
||||
///
|
||||
/// If your [builder] function contains a subtree that does not depend on the
|
||||
/// animation, it's more efficient to build that subtree once instead of
|
||||
/// rebuilding it on every animation tick.
|
||||
@ -461,8 +466,51 @@ typedef Widget TransitionBuilder(BuildContext context, Widget child);
|
||||
/// Using this pre-built child is entirely optional, but can improve
|
||||
/// performance significantly in some cases and is therefore a good practice.
|
||||
///
|
||||
/// For simple cases without additional state, consider using
|
||||
/// [AnimatedWidget].
|
||||
/// ## Sample code
|
||||
///
|
||||
/// This code defines a widget called `Spinner` that spins a green square
|
||||
/// continually. It is built with an [AnimatedBuilder] and makes use of the
|
||||
/// [child] feature to avoid having to rebuild the [Container] each time.
|
||||
///
|
||||
/// ```dart
|
||||
/// class Spinner extends StatefulWidget {
|
||||
/// @override
|
||||
/// _SpinnerState createState() => new _SpinnerState();
|
||||
/// }
|
||||
///
|
||||
/// class _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {
|
||||
/// AnimationController _controller;
|
||||
///
|
||||
/// @override
|
||||
/// void initState() {
|
||||
/// super.initState();
|
||||
/// _controller = new AnimationController(
|
||||
/// duration: const Duration(seconds: 10),
|
||||
/// vsync: this,
|
||||
/// )..repeat();
|
||||
/// }
|
||||
///
|
||||
/// @override
|
||||
/// void dispose() {
|
||||
/// _controller.dispose();
|
||||
/// super.dispose();
|
||||
/// }
|
||||
///
|
||||
/// @override
|
||||
/// Widget build(BuildContext context) {
|
||||
/// return new AnimatedBuilder(
|
||||
/// animation: _controller,
|
||||
/// child: new Container(width: 200.0, height: 200.0, color: Colors.green),
|
||||
/// builder: (BuildContext context, Widget child) {
|
||||
/// return new Transform.rotate(
|
||||
/// angle: _controller.value * 2.0 * math.PI,
|
||||
/// child: child,
|
||||
/// );
|
||||
/// },
|
||||
/// );
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
class AnimatedBuilder extends AnimatedWidget {
|
||||
/// Creates an animated builder.
|
||||
///
|
||||
|
@ -158,8 +158,8 @@ class FlutterDriver {
|
||||
VMIsolate isolate = await vm.isolates.first.loadRunnable();
|
||||
|
||||
// TODO(yjbanov): vm_service_client does not support "None" pause event yet.
|
||||
// It is currently reported as `null`, but we cannot rely on it because
|
||||
// eventually the event will be reported as a non-`null` object. For now,
|
||||
// It is currently reported as null, but we cannot rely on it because
|
||||
// eventually the event will be reported as a non-null object. For now,
|
||||
// list all the events we know about. Later we'll check for "None" event
|
||||
// explicitly.
|
||||
//
|
||||
|
@ -49,13 +49,14 @@ void enableFlutterDriverExtension() {
|
||||
assert(WidgetsBinding.instance is _DriverBinding);
|
||||
}
|
||||
|
||||
/// Handles a command and returns a result.
|
||||
/// Signature for functions that handle a command and return a result.
|
||||
typedef Future<Result> CommandHandlerCallback(Command c);
|
||||
|
||||
/// Deserializes JSON map to a command object.
|
||||
/// Signature for functions that deserialize a JSON map to a command object.
|
||||
typedef Command CommandDeserializerCallback(Map<String, String> params);
|
||||
|
||||
/// Runs the finder and returns the [Element] found, or `null`.
|
||||
/// Signature for functions that run the given finder and return the [Element]
|
||||
/// found, if any, or null otherwise.
|
||||
typedef Finder FinderConstructor(SerializableFinder finder);
|
||||
|
||||
@visibleForTesting
|
||||
|
@ -28,14 +28,14 @@ class TimelineSummary {
|
||||
/// Average amount of time spent per frame in the framework building widgets,
|
||||
/// updating layout, painting and compositing.
|
||||
///
|
||||
/// Returns `null` if no frames were recorded.
|
||||
/// Returns null if no frames were recorded.
|
||||
double computeAverageFrameBuildTimeMillis() {
|
||||
return _averageInMillis(_extractFrameThreadDurations());
|
||||
}
|
||||
|
||||
/// The longest frame build time in milliseconds.
|
||||
///
|
||||
/// Returns `null` if no frames were recorded.
|
||||
/// Returns null if no frames were recorded.
|
||||
double computeWorstFrameBuildTimeMillis() {
|
||||
return _maxInMillis(_extractFrameThreadDurations());
|
||||
}
|
||||
@ -48,14 +48,14 @@ class TimelineSummary {
|
||||
|
||||
/// Average amount of time spent per frame in the GPU rasterizer.
|
||||
///
|
||||
/// Returns `null` if no frames were recorded.
|
||||
/// Returns null if no frames were recorded.
|
||||
double computeAverageFrameRasterizerTimeMillis() {
|
||||
return _averageInMillis(_extractDuration(_extractGpuRasterizerDrawEvents()));
|
||||
}
|
||||
|
||||
/// The longest frame rasterization time in milliseconds.
|
||||
///
|
||||
/// Returns `null` if no frames were recorded.
|
||||
/// Returns null if no frames were recorded.
|
||||
double computeWorstFrameRasterizerTimeMillis() {
|
||||
return _maxInMillis(_extractDuration(_extractGpuRasterizerDrawEvents()));
|
||||
}
|
||||
|
@ -476,7 +476,7 @@ class AndroidDevice extends Device {
|
||||
|
||||
static final RegExp _timeRegExp = new RegExp(r'^\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}', multiLine: true);
|
||||
|
||||
/// Return the most recent timestamp in the Android log or `null` if there is
|
||||
/// Return the most recent timestamp in the Android log or null if there is
|
||||
/// no available timestamp. The format can be passed to logcat's -T option.
|
||||
String get lastLogcatTimestamp {
|
||||
final String output = runCheckedSync(adbCommandForDevice(<String>[
|
||||
|
@ -316,7 +316,7 @@ DevFSContent _createFontManifest(Map<String, dynamic> manifestDescriptor,
|
||||
/// Given an assetBase location and a pubspec.yaml Flutter manifest, return a
|
||||
/// map of assets to asset variants.
|
||||
///
|
||||
/// Returns `null` on missing assets.
|
||||
/// Returns null on missing assets.
|
||||
Map<_Asset, List<_Asset>> _parseAssets(
|
||||
PackageMap packageMap,
|
||||
Map<String, dynamic> manifestDescriptor,
|
||||
|
@ -27,7 +27,7 @@ abstract class OperatingSystemUtils {
|
||||
/// Make the given file executable. This may be a no-op on some platforms.
|
||||
ProcessResult makeExecutable(File file);
|
||||
|
||||
/// Return the path (with symlinks resolved) to the given executable, or `null`
|
||||
/// Return the path (with symlinks resolved) to the given executable, or null
|
||||
/// if `which` was not able to locate the binary.
|
||||
File which(String execName) {
|
||||
final List<File> result = _which(execName);
|
||||
@ -206,7 +206,7 @@ class _WindowsUtils extends OperatingSystemUtils {
|
||||
|
||||
/// Find and return the project root directory relative to the specified
|
||||
/// directory or the current working directory if none specified.
|
||||
/// Return `null` if the project root could not be found
|
||||
/// Return null if the project root could not be found
|
||||
/// or if the project root is the flutter repository root.
|
||||
String findProjectRoot([String directory]) {
|
||||
const String kProjectRootSentinel = 'pubspec.yaml';
|
||||
|
@ -82,7 +82,7 @@ String _getPackagePath(PackageMap packageMap, String package) {
|
||||
return fs.path.dirname(packageMap.map[package].toFilePath());
|
||||
}
|
||||
|
||||
/// Build an AOT snapshot. Return `null` (and log to `printError`) if the method
|
||||
/// Build an AOT snapshot. Return null (and log to `printError`) if the method
|
||||
/// fails.
|
||||
Future<String> buildAotSnapshot(
|
||||
String mainPath,
|
||||
|
@ -42,7 +42,7 @@ class ConfigCommand extends FlutterCommand {
|
||||
'Analytics reporting is currently ${flutterUsage.enabled ? 'enabled' : 'disabled'}.';
|
||||
}
|
||||
|
||||
/// Return `null` to disable tracking of the `config` command.
|
||||
/// Return null to disable tracking of the `config` command.
|
||||
@override
|
||||
Future<String> get usagePath => null;
|
||||
|
||||
|
@ -311,7 +311,7 @@ final Set<String> _packageDependencies = new Set<String>.from(<String>[
|
||||
'yaml'
|
||||
]);
|
||||
|
||||
/// Return `null` if the project name is legal. Return a validation message if
|
||||
/// Return null if the project name is legal. Return a validation message if
|
||||
/// we should disallow the project name.
|
||||
String _validateProjectName(String projectName) {
|
||||
if (!package_names.isValidPackageName(projectName))
|
||||
@ -324,7 +324,7 @@ String _validateProjectName(String projectName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Return `null` if the project directory is legal. Return a validation message
|
||||
/// Return null if the project directory is legal. Return a validation message
|
||||
/// if we should disallow the directory name.
|
||||
String _validateProjectDir(String dirPath, { String flutterRoot }) {
|
||||
if (fs.path.isWithin(flutterRoot, dirPath)) {
|
||||
|
@ -136,7 +136,7 @@ class AnalysisDriver {
|
||||
|
||||
bool _isFiltered(AnalysisError error) {
|
||||
final ErrorProcessor processor = ErrorProcessor.getProcessor(context.analysisOptions, error);
|
||||
// Filtered errors are processed to a severity of `null`.
|
||||
// Filtered errors are processed to a severity of null.
|
||||
return processor != null && processor.severity == null;
|
||||
}
|
||||
|
||||
|
@ -134,7 +134,7 @@ abstract class FlutterCommand extends Command<Null> {
|
||||
applicationPackages ??= new ApplicationPackageStore();
|
||||
}
|
||||
|
||||
/// The path to send to Google Analytics. Return `null` here to disable
|
||||
/// The path to send to Google Analytics. Return null here to disable
|
||||
/// tracking of the command.
|
||||
Future<String> get usagePath async => name;
|
||||
|
||||
@ -218,7 +218,7 @@ abstract class FlutterCommand extends Command<Null> {
|
||||
/// Find and return all target [Device]s based upon currently connected
|
||||
/// devices and criteria entered by the user on the command line.
|
||||
/// If no device can be found that meets specified criteria,
|
||||
/// then print an error message and return `null`.
|
||||
/// then print an error message and return null.
|
||||
Future<List<Device>> findAllTargetDevices() async {
|
||||
if (!doctor.canLaunchAnything) {
|
||||
printError("Unable to locate a development device; please run 'flutter doctor' "
|
||||
@ -264,7 +264,7 @@ abstract class FlutterCommand extends Command<Null> {
|
||||
/// Find and return the target [Device] based upon currently connected
|
||||
/// devices and criteria entered by the user on the command line.
|
||||
/// If a device cannot be found that meets specified criteria,
|
||||
/// then print an error message and return `null`.
|
||||
/// then print an error message and return null.
|
||||
Future<Device> findTargetDevice() async {
|
||||
List<Device> deviceList = await findAllTargetDevices();
|
||||
if (deviceList == null)
|
||||
|
@ -236,7 +236,7 @@ class FlutterVersion {
|
||||
/// This method sends a server request if it's been more than
|
||||
/// [kCheckAgeConsideredUpToDate] since the last version check.
|
||||
///
|
||||
/// Returns `null` if the cached version is out-of-date or missing, and we are
|
||||
/// Returns null if the cached version is out-of-date or missing, and we are
|
||||
/// unable to reach the server to get the latest version.
|
||||
Future<DateTime> _getLatestAvailableFlutterVersion() async {
|
||||
Cache.checkLockAcquired();
|
||||
|
Loading…
x
Reference in New Issue
Block a user